如何从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_sregex这个对吗? 有人请告诉我RAILS方式。

使用Date#strftime

 Date.parse('2014-01-21 03:13:59 UTC').strftime('%m/%d/%Y') # => "01/21/2014" 

如果varTimeWithZone对象,只需调用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的更多信息