god*_*yan 9 datetime ruby-on-rails date datetime-format ruby-on-rails-3
所以我有一个具有datetime属性的模型实例.我在我的视图中使用以下方式显示它:
<%= @instance.date.to_date %>
Run Code Online (Sandbox Code Playgroud)
但它显示为:2011-09-09
我希望它出现在:2011年9月9日
我该怎么做呢?
谢谢!
Dyl*_*kow 14
<%= @instance.date.strftime("%B %d, %Y") %>
Run Code Online (Sandbox Code Playgroud)
这会给你"2011年9月9日".
如果你真的需要当天的序数("th","rd"等),你可以这样做:
<%= @instance.date.strftime("%B #{@instance.date.day.ordinalize}, %Y") %>
Run Code Online (Sandbox Code Playgroud)
Cha*_*ton 10
有一种更简单的内置方法来实现您正在寻找的日期样式.
<%= @instance.datetime.to_date.to_formatted_s :long_ordinal %>
Run Code Online (Sandbox Code Playgroud)
默认情况下,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"
Run Code Online (Sandbox Code Playgroud)
你可以在这里看到完整的解释.
Rails这样做的方法就是使用
<%=l @instance.date %>
Run Code Online (Sandbox Code Playgroud)
"l"是"localize"的缩写,并使用您在en.yml中定义的格式将日期转换为可读格式.您可以在yml文件中定义各种格式:
en:
date:
formats:
default: ! '%d.%m.%Y'
long: ! '%a, %e. %B %Y'
short: ! '%e. %b'
Run Code Online (Sandbox Code Playgroud)
要使用视图中默认格式以外的其他格式,请使用:
<%=l @instance.date, format: :short %>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9713 次 |
| 最近记录: |