我似乎无法找到这一点,我觉得它应该很容易。在Ruby on Rails中,我该如何处理:
2010-06-14 19:01:00 UTC
并将其转换为
June 14th, 2010
我可以不在视图中使用帮助器吗?
答案 0 :(得分:53)
我不知道
June 14th, 2010
但如果你想要
June 14, 2010
参考how do i get name of the month in ruby on Rails?或this
只做
@date = Time.now
@date.strftime("%B %d, %Y")
对于后缀使用
@date.strftime("%B #{@date.day.ordinalize}, %Y") # >>> Gives `June 18th, 2010`
答案 1 :(得分:6)
rails中的时间和日期格式:
日期
====
db:‘%Y-%m-%d’ 2008-08-20
long_ordinal:‘&proc’ August 20th, 2008
long:‘%B %e, %Y’ August 20, 2008
rfc822:‘%e %b %Y’ 20 Aug 2008
number:‘%Y%m%d’ 20080820
short:‘%e %b’ 20 Aug
日期时间
====
db:‘%Y-%m-%d’ 2008-08-20 16:56:21
long_ordinal:‘&proc’ August 20th, 2008 16:56
long:‘%B %e, %Y’ August 20, 2008 16:56
rfc822:‘%e %b %Y’ Wed, 20 Aug 2008 16:56:21 -0600
number:‘%Y%m%d’ 20080820165621
short:‘%e %b’ 20 Aug 16:56
时间
====
db:‘%Y-%m-%d %H:%M:%S’ 2008-08-20 16:56:21
long_ordinal:‘&proc’ August 20th, 2008 16:56
long:‘%B %d, %Y %H:%M’ August 20, 2008 16:56
rfc822:‘%a, %d %b %Y %H:%M:%S %z’ Wed, 20 Aug 2008 16:56:21 -0600
short:‘%d %b %H:%M’ 20 Aug 16:56
number:‘%Y%m%d%H%M%S’ 20080820165621
time:‘%H:%M’ 16:56
例如:
<%= news.created_at.strftime("%B %d, %Y %H:%M") %>
感谢http://onrails.org/2008/08/20/what-are-all-the-rails-date-formats.html
答案 2 :(得分:5)
供将来参考:Rails date time formats
答案 3 :(得分:3)
您无需将其保存在变量中。
Time.now.strftime("%Y-%m-%d") # 2013-01-08
答案 4 :(得分:2)
需要Time.parse
的时间模块和Integer#ordinalize
的ActiveSupport:
require 'time'
require 'active_support'
input = '2010-06-14 19:01:00 UTC'
t = Time.parse(input)
date = "%s %s, %d" % [t.strftime("%B"), t.day.ordinalize, t.year]
# => "June 14th, 2010"
答案 5 :(得分:0)
就在前几天有一个类似的问题。在我的回答how do I get name of the month in ruby on Rails?中,我展示了如何在to_s
文件中添加自定义config/environment.rb
定义。
ActiveSupport::CoreExtensions::Time::Conversions::DATE_FORMATS.merge!(
:my_own_long_date_format => "%B %d, %Y")
现在,您可以从任意视图中致电Time.now.to_s(:my_own_long_date_format)
获取:
June 15, 2010
答案 6 :(得分:0)
在Rails 5中运行的更新:
<%= l @user.created_at, format: :short %>
国际化:
<%= I18n.l( @user.created_at, format: :short) %>
您可以使用:long代替:short