这是我想要展示的内容:
May 13, 2012
这是显示的内容:
2012-05-13
我搜索了一些答案,它引导我“Formatting Dates and Floats in Ruby”,在那里它提到了一个可能的解决方案:
<p class="date"><%= @news_item.postdate.to_s("%B %d, %Y") %></p>
然而,这根本不会改变输出。没有调试错误或异常被触发。
我能做到这一点并且完美无缺:
<p class="date"><%= Time.now.to_s("%B %d, %Y") %></p>
这是我的迁移文件(查看我使用的数据类型):
class CreateNewsItems < ActiveRecord::Migration
def change
create_table :news_items do |t|
t.date :postdate
t.timestamps
end
end
end
答案 0 :(得分:51)
Date.to_s
与Time.to_s
不同。您的postdate
是Date
,因此您可能希望改为strftime
:
postdate.strftime("%B %d, %Y")
甚至可以将自己的自定义日期格式添加到您的Rails应用中:
Need small help in converting date format in ruby
答案 1 :(得分:41)
to_formatted_s函数已经为Rails中的DateTime
个对象提供了一些常见的人类可读格式。
datetime.to_formatted_s(:db) # => "2007-12-04 00:00:00"
datetime.to_formatted_s(:short) # => "04 Dec 00:00"
datetime.to_formatted_s(:long) # => "December 04, 2007 00:00"
datetime.to_formatted_s(:long_ordinal) # => "December 4th, 2007 00:00"
datetime.to_formatted_s(:rfc822) # => "Tue, 04 Dec 2007 00:00:00 +0000"
datetime.to_formatted_s(:iso8601) # => "2007-12-04T00:00:00+00:00"
答案 2 :(得分:2)
<%= time_ago_in_words @user.created_at %>
结果:9小时前