【问题标题】:Change format of created_at in Rails 3.1?在 Rails 3.1 中更改 created_at 的格式?
【发布时间】:2011-11-14 09:55:35
【问题描述】:

我正在调用在运行 Rails 3.1 的基本应用程序中创建记录的日期。

<%= @issue.created_at %>

以上输出如下时间戳:

2011-09-10 14:44:24 UTC

更改此显示方式的最简单方法是什么?我想要这样的东西:

10 Sept. 2011

然后以不同的格式再次调用它:

14:44

所以我可以调用它两次并将两者合并在一起:

10 Sept. 2011
14:44

我想调用它两次而不是创建一个帮助器来格式化两行日期/时间的原因是允许我在某些地方调用日期而在其他地方只调用时间。

【问题讨论】:

    标签: ruby-on-rails date timestamp ruby-on-rails-3.1


    【解决方案1】:

    最简单的方法是使用strftime函数

    # Day / Month / Year
    @issue.created_at.strftime("%d %b. %Y")
    # Hour:Min
    @issue.created_at.strftime("%H:%M")
    

    如果您发现自己经常这样做,可以将这两个调用放在单独的助手中。

    【讨论】:

    • 如果我将它们放入问题帮助程序文件中,我会收到一个无方法错误。我应该改变调用 created_at 的方式吗?
    • 有些人可能会发现这与此解决方案一起很有用:strftime docs
    • @PeterPiper 这取决于你在做什么,但在大多数情况下你也应该强烈考虑stackoverflow.com/a/7372752/625365
    【解决方案2】:

    我会使用 I18n。看看一些例子http://guides.rubyonrails.org/i18n.html#adding-date-time-formats。这是格式化日期和时间的一种简洁灵活的方式。

    【讨论】:

    • 使用该链接中的示例,我现在有了 :short %>,这会导致异常错误。有什么想法吗?
    【解决方案3】:
    <%= l(@issue.created_at, :format=>:your_format) %>
    

    您必须在语言环境 YAML (app/config/locale/country_id.yml) 中声明

    time:
     formats:
      your_format: '%d %b. %Y'
      your_another_format: '%I:%M'
    

    日期格式应该在你的 i18n YAML 定义文件中声明以便于配置,其他日期格式可以找到here

    【讨论】:

      【解决方案4】:

      查看http://www.foragoodstrftime.com/,轻松自定义日期/时间格式@spike

      【讨论】:

      • Add Time::DATE_FORMATS[:default] = "%d/%m/%Y %H:%M" 或此字符串的某些变体将其放入配置/初始化程序中的文件中(您可以称之为 date_and_time.rb)
      【解决方案5】:

      你可以这样做:

      @issue.created_at.to_date.iso8601

      【讨论】:

        【解决方案6】:

        to_s 也接受格式输入参数:

        http://apidock.com/rails/ActiveSupport/TimeWithZone/to_s

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-02-10
          • 1970-01-01
          • 1970-01-01
          • 2014-08-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多