如何从Rails 4中的db:datetime记录格式化时间和日期?
我在视图中有一个var
,它将日期时间数据库记录中的日期和时间作为UTC格式返回。 输出如下: 2014-01-21 03:13:59 UTC
我该如何格式化? Date.parse(var)
将在IRB中给出#=> Tue, 21 Jan 2014
但在RAILS 4中的类型错误: “没有将ActiveSupport :: TimeWithZone隐式转换为String”
我最终想要显示日期; 格式化为: %m/%d/%Y
我唯一的选择不能是: to_s
和regex
这个对吗? 有人请告诉我RAILS方式。
使用Date#strftime
:
Date.parse('2014-01-21 03:13:59 UTC').strftime('%m/%d/%Y') # => "01/21/2014"
如果var
是TimeWithZone
对象,只需调用TimeWithZone#strftime
方法 :
var.strftime('%m/%d/%Y')
我认为Rails的方法是在初始化程序中命名该格式并使用to_formatted_s
(或其to_s
别名):
# in config/initializers/date_time_formats.rb Time::DATE_FORMATS.merge!( date_us: '%m/%d/%Y' ) Date::DATE_FORMATS.merge!( date_us: '%m/%d/%Y' )
要在您的视图中使用此格式:
<%= @object.date.to_s(format: :date_us) %>
这允许您在应用程序中重用此命名格式,而无需重写复杂的strftime
字符串。 您可以添加多种不同的格式,并在应用中添加一个位置来更改现有格式。
如果要将应用程序本地化为不同的语言,可能需要将这些格式存储在语言环境yml
文件中。 这允许您根据用户的位置使用不同的格式。 在Rails指南中了解有关I18n的更多信息