将日期格式化为Rails中的单词

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

 

但它显示为:2011-09-09

我希望它出现在:2011年9月9日

我该怎么做呢?

谢谢!

 <%= @instance.date.strftime("%B %d, %Y") %> 

这会给你“2011年9月9日”。

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

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

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

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

默认情况下,to_formatted_s方法接受各种格式属性选项。 对于eaxmple,来自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" 

你可以在这里看到完整的解释。

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 %> 

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

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

您在rails中也有<%= time_tag time%>

Interesting Posts