2016-05-23 30 views
0

我的服務器時鐘設置爲倫敦時間(我目前生活在GMT + 0區域)。的timedatectl status輸出給了我這樣的:Rails未應用夏令時

Local time: Mon 2016-05-23 08:13:06 BST Universal time: Mon 2016-05-23 07:13:06 UTC 
    RTC time: Mon 2016-05-23 07:13:06 
    Timezone: Europe/London (BST, +0100) 
NTP enabled: yes NTP synchronized: no RTC in local TZ: no 
    DST active: yes Last DST change: DST began at 
       Sun 2016-03-27 00:59:59 GMT 
       Sun 2016-03-27 02:00:00 BST Next DST change: DST ends (the clock jumps one hour backwards) at 
       Sun 2016-10-30 01:59:59 BST 
       Sun 2016-10-30 01:00:00 GMT 

而在我的application.rb中的文件I設置時區:

config.time_zone = 'London' 

在本地,它的工作原理正確的:

Time.now.dst? 
# true 
Time.now.hour 
# 8 

但是在生產中,似乎並沒有開啓DST。

Time.now.dst? 
# false 
Time.now.hour 
# 7 

我不確定這是Rails的東西還是服務器配置錯誤,但對我來說似乎是正確的。

+0

它會給你一個不同的時區,甚至不同的時間(UTC),還是真的只是夏令時? – xyious

+0

你有沒有試過'config.time_zone ='London'''config.active_record.default_timezone =:local'? –

+0

也許生產日期/時間錯誤(仍然在冬天)? – BoraMa

回答

2

如果此應用程序在Docker容器中運行,則主機服務器的時區可能不會應用於容器。您可以將TZ環境變量設置爲您想要的任何時區,並且Ruby會將其選中。

我強烈建議而不是使用非UTC時區爲您的應用程序/數據庫,因爲它幾乎肯定會導致問題。

充分披露:我是dokku維護者之一。

+0

工作。我剛剛做了'dokku config:set app-name ENV = prod TZ = Europe/London'。格拉西亞斯@喬斯。 – pzin