2014-01-21 46 views
2

在我看來,我有一個vardatetime數據庫記錄中返回日期和時間作爲UTC格式。輸出如下所示:2014-01-21 03:13:59 UTC如何從db:datetime記錄在Rails 4中格式化時間和日期?

如何格式化? Date.parse(var)會給在IRB #=> Tue, 21 Jan 2014但在鋼軌類型錯誤的4:「的ActiveSupport :: TimeWithZone的沒有隱式轉換成字符串」

我最終想只顯示日期;格式爲:%m/%d/%Y我唯一的選擇不能是:to_sregex這個權利? 有人請告訴我RAILS的方式。

回答

2

使用Date#strftime

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

如果varTimeWithZone對象,只需調用TimeWithZone#strftime method

var.strftime('%m/%d/%Y') 
+0

我試過了。這讓我頭暈目眩。我回來了:「沒有將ActiveSupport :: TimeWithZone隱式轉換爲字符串」 – fyz

+0

我在var上調用'to_s',我回來了:無效的日期 – fyz

+0

在你的第二個建議,我回來了:未定義的方法'strftime'爲無:NilClass – fyz

0

我要說的是,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 Guide about I18n