【问题标题】:Formatting a Date as words in Rails在 Rails 中将日期格式化为单词
【发布时间】:2011-10-21 14:41:23
【问题描述】:

所以我有一个具有 datetime 属性的模型实例。我正在使用以下方式在我的视图中显示它:

<%= @instance.date.to_date %> 

但它显示为:2011-09-09

我希望它显示为:2011 年 9 月 9 日

我该怎么做?

谢谢!

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 datetime date datetime-format


    【解决方案1】:

    你也有 在 rails

    【讨论】:

      【解决方案2】:

      Rails 的做法是使用

      <%=l @instance.date %>
      

      “l”是“localize”的缩写,它使用您在 en.yml 中定义的格式将日期转换为可读格式。您可以在 yml 文件中定义各种格式:

      en:
        date:
          formats:
            default: ! '%d.%m.%Y'
            long: ! '%a, %e. %B %Y'
            short: ! '%e. %b'
      

      要使用视图中默认格式以外的另一种格式,请使用:

      <%=l @instance.date, format: :short %>
      

      【讨论】:

        【解决方案3】:

        Rails 将它作为变形器内置到 ActiveSupport 中:

        ActiveSupport::Inflector.ordinalize(@instance.date.day)
        

        【讨论】:

          【解决方案4】:

          有一种更简单的内置方法可以实现您正在寻找的日期样式。

          <%= @instance.datetime.to_date.to_formatted_s :long_ordinal %>
          

          to_formatted_s 方法默认接受多种格式属性选项。例如,来自 Rails API:

          date.to_formatted_s(:db)            # => "2007-11-10"
          date.to_s(:db)                      # => "2007-11-10"
          
          date.to_formatted_s(:short)         # => "10 Nov"
          date.to_formatted_s(:long)          # => "November 10, 2007"
          date.to_formatted_s(:long_ordinal)  # => "November 10th, 2007"
          date.to_formatted_s(:rfc822)        # => "10 Nov 2007"
          

          你可以看到完整的解释here

          【讨论】:

            【解决方案5】:
            <%= @instance.date.strftime("%B %d, %Y") %>
            

            这将为您提供“2011 年 9 月 9 日”。

            如果您真的需要当天的序数(“th”、“rd”等),您可以这样做:

            <%= @instance.date.strftime("%B #{@instance.date.day.ordinalize}, %Y") %>
            

            【讨论】:

            • 这是我一直在寻找的解决方案。唯一的问题,我如何将它添加到 en.yml 文件中?我希望能够将 i18n 与 lambda 一起使用
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2014-04-10
            • 2023-04-01
            • 2022-06-27
            • 2016-09-03
            • 1970-01-01
            • 2017-10-02
            • 1970-01-01
            相关资源
            最近更新 更多