ruby-on-rails - Rails 没有应用夏令时

标签 ruby-on-rails ubuntu timezone dst 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

但在生产中,似乎没有启用 DST。
Time.now.dst?
# false
Time.now.hour
# 7

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

最佳答案

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

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

全面披露:我是独库维护者之一。

关于ruby-on-rails - Rails 没有应用夏令时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37385089/

相关文章:

sql - 如何根据另一个字段计算字段值?

javascript - 为什么我的整个 Ubuntu 系统在 Firefox 中的错误 javascript 代码上卡住?

java - Ubuntu告诉我找不到spring boot应用程序的init.d服务并且无法运行它

java - Joda Time - 时区不同

postgresql - 在 UTC 中使用当前时间作为 PostgreSQL 中的默认值

ruby-on-rails - Rails : validate presence of foo unless bar == 'baz'

ruby-on-rails - 搜索查询 (name or forename) and (name forname) and (forname name)

java - 是否可以创建一个像Tue Mar 03 13:43:00这样的Calendar对象(没有时区)?

ruby-on-rails - 在 Rails 中设置当前 Time.zone?

linux - 在linux中部分合并2个文本文件