如何格式化DB的时间和日期:Rails 4中的DATETIME记录



我的视图中有一个var,从datetime数据库记录返回日期和时间为UTC格式。输出看起来像这样:2014-01-21 03:13:59 UTC

我该如何格式化?Date.parse(var)将在IRB中给出#=> Tue, 21 Jan 2014,但Rails 4 of:" ActiveSupport :: TimeWithzone无隐式转换为字符串"

我最终只想显示日期;格式为:%m/%d/%Y我唯一的选择不能是:to_sregex这对吗?有人请向我展示铁轨。

使用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字符串。您可以添加几种不同的格式,并在应用中有一个位置以更改所有现有格式。

如果您要将应用程序本地化为不同的语言,则可能需要考虑将这些格式存储在yaml文件中。这使您可以根据用户的位置使用不同的格式。在有关I18N的官方铁路指南中阅读有关它的更多信息。

最新更新