Rails 没有应用夏令时
Rails isn't applying daylight saving time
我的服务器时钟设置为伦敦时间(我目前住在 GMT+0 区)。 timedatectl status
的输出给了我这个:
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 文件中我设置了时区:
config.time_zone = 'London'
在本地,它工作正常:
Time.now.dst?
# true
Time.now.hour
# 8
但在生产中似乎没有启用夏令时。
Time.now.dst?
# false
Time.now.hour
# 7
我不确定这是 Rails 问题还是服务器配置错误,但对我来说似乎是正确的。
如果此应用程序 运行 在 docker 容器中,则主机服务器的时区可能不适用于容器。您可以将 TZ
环境变量设置为您想要的任何时区,然后 ruby 会选择它。
我强烈建议不要为您的 application/database 使用非 UTC 时区,因为它几乎肯定会导致问题。
完全披露:我是 dokku 维护者之一。
我的服务器时钟设置为伦敦时间(我目前住在 GMT+0 区)。 timedatectl status
的输出给了我这个:
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 文件中我设置了时区:
config.time_zone = 'London'
在本地,它工作正常:
Time.now.dst?
# true
Time.now.hour
# 8
但在生产中似乎没有启用夏令时。
Time.now.dst?
# false
Time.now.hour
# 7
我不确定这是 Rails 问题还是服务器配置错误,但对我来说似乎是正确的。
如果此应用程序 运行 在 docker 容器中,则主机服务器的时区可能不适用于容器。您可以将 TZ
环境变量设置为您想要的任何时区,然后 ruby 会选择它。
我强烈建议不要为您的 application/database 使用非 UTC 时区,因为它几乎肯定会导致问题。
完全披露:我是 dokku 维护者之一。