Rails 未应用夏令时



我的服务器时钟设置为伦敦时间(我目前住在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

但在生产中,DST 似乎没有打开。

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

我不确定这是Rails的事情还是服务器配置错误,但对我来说这似乎是正确的。

如果此应用程序在 docker 容器中运行,则主机服务器的时区可能不会应用于容器。您可以将TZ环境变量设置为您想要的任何时区,Ruby 会选择它。

我强烈建议不要为您的应用程序/数据库使用非 UTC 时区,因为它几乎肯定会导致问题。

完全披露:我是 dokku 维护者之一。

相关内容

  • 没有找到相关文章

最新更新