【问题标题】:In ruby on rails, how could I convert a time in ActiveSupport::TimeWithZone to Month, Date, Year?在 ruby​​ on rails 中,如何将 ActiveSupport::TimeWithZone 中的时间转换为月、日期、年?
【发布时间】:2015-05-11 07:16:10
【问题描述】:

在 ruby​​ on rails 中,如何将 ActiveSupport::TimeWithZone 中的时间转换为月、日、年。 例如,我有以下时间:

Fri, 08 May 2015 22:54:31 UTC +00:00

我需要的是这样的:

05/08/2014

【问题讨论】:

标签: ruby-on-rails ruby


【解决方案1】:

像这样使用strftime

 > t = Time.now
 #=> 2015-05-11 12:47:32 +0530 
 > t.strftime('%m/%d/%Y')
 #=> "05/11/2015" 

【讨论】:

    【解决方案2】:
    irb(main):010:0> DateTime.parse("Fri, 08 May 2015 22:54:31 UTC +00:00").strftime("%d/%m/%Y")
    => "08/05/2015"
    

    【讨论】:

      【解决方案3】:

      使用to_formatted_s 方法的此to_s 方法别名。

      your_var.to_s('%m/%d/%Y')
      

      【讨论】:

        【解决方案4】:

        访问Strftime Rails api doc

        t = Time.now                        #=> 2007-11-19 08:37:48 -0600
        t.strftime("Printed on %m/%d/%Y")   #=> "Printed on 11/19/2007"
        t.strftime("at %I:%M%p")            #=> "at 08:37AM"
        

        【讨论】:

          【解决方案5】:

          尽管上述所有问题都有效并做好工作。I18n 有专门的 API 来解决这个问题。

          这里描述了rails方式http://guides.rubyonrails.org/i18n.html

          3.3 添加日期/时间格式

          <p><%= l Time.now, format: :short %></p>
          
          # en.yml
          en:
            time:
              formats:
                short: "%m/%d/%Y"
          

          这有助于让事情保持整洁,让您远离视线。

          希望对你有帮助

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-08-23
            • 2011-05-28
            相关资源
            最近更新 更多