我可以设法更改 Heroku 上的时区,但它仍然比我的本地时间少一小时。任何人都可以帮助如何在 Heroku 上设置 DST(夏令时)偏移量吗?
2 回答
Heroku 应用程序在普通的 unix 系统上运行,并且那里有所有的 zoneinfo 文件。我也相当确定它们是最新的。
就 unix 而言,您应该能够使用以下内容设置您的 TZ env var:
$ heroku config:set TZ=Europe/Berlin
您可以使用以下命令查看有效的 zoneinfo 名称:
$ heroku run find /usr/share/zoneinfo/posix
不过,一般来说,您会希望在 UTC 环境中运行您的应用程序,并在内部处理时区,可能在每个用户的基础上处理本地时间。
我怀疑这可能无法完全回答您的问题。您可能想要扩展您想要实现的具体目标以及您如何尝试实现它,以及您如何观察“比本地少一小时”的效果。
我在 Heroku 的 Symfony 项目中遇到了与 php 和 DateTime() 类似的问题。我意识到中欧夏季日光变化后的时差。即使在 heroku 设置时区也不能解决问题:
$ heroku config:set TZ=Europe/Berlin
当我在服务器端读出 phpinfo() 的 UTC 设置时,我决定更改 Heroku 的 php.ini 设置。这是 Heroku 的一篇文章:
https://devcenter.heroku.com/articles/custom-php-settings#php-runtime-settings
通过将.user.ini文件添加到您的 Web 根目录,您可以调整应用程序的设置。例如,通过添加 date.time 设置:
date.timezone = Europe/Berlin
我知道这不是全球使用的最佳解决方案,但到目前为止它仍然有效,而且我的 symfony 应用程序现在只对中欧很重要。