2016-03-29 47 views
0

我正在使用Rails 4構建應用程序。我正在從JSON讀取Unix時間戳,並嘗試根據我的時區將其顯示爲格式正確的時間。我能夠讀取顯示的時間戳,但它以UTC而不是EST顯示。Rails從時間戳轉換爲帶時區的格式化時間

這是我在我看來

<%= Time.at(DateTime.strptime(@weather['sys']['sunrise'].to_s,'%s')).strftime("%l:%M %P") %> 

我在那裏我這樣做相同的轉換四個不同的時間戳。

有什麼我可以解決這個顯示適當的時區?

+0

'in_time_zone( 「東部時間(美國和加拿大)」)'或'in_time_zone( 「EST」)' - 有你當前的時間格式試過嗎?例如:'Time.now.time_time_zone(「EST」)' – dp7

+0

我曾嘗試過@dkp,我將整個日期時間打印爲2016-03-29 11:18:00 -0400,所以我不確定是否這樣是否正確的軌道。我只是試了一遍,在格式化之前切換到時區,並且它工作正常!這是我用過的:<%= Time.at(DateTime.strptime(@weather ['sys'] ['sunrise']。to_s,'%s'))。in_time_zone(「Eastern Time(US&Canada)」 ).strftime(「%l:%M%P」)%>如果你想把它寫成答案,我會接受它。感謝您讓我走上正軌! – mack

+0

很高興它幫助你!將其更新爲答案。 – dp7

回答

0

你可以試試這個:

<%= Time.at(DateTime.strptime(@weather['sys']['sunrise'].to_s,'%s')).in_time_zone("E‌​astern Time (US & Canada)").strftime("%l:%M %P") %> 
0

嘗試以下操作:

<% time_zone = "PDT" %> 
<%= Time.at(DateTime.strptime(@weather['sys']['sunrise'].to_s,'%s')).in_time_zone(time_zone).strftime("%l:%M %P") %> 

參考ActiveSupport::TimeWithZone#in_time_zone獲取更多信息。