我可以设法更改Heroku的时区,但它仍然比我的当地时间少一个小时。有没有人可以帮助我如何在Heroku上设置DST(日光节约)偏移?
Heroku应用程序在普通的unix系统上运行,并且那里有所有的zoneinfo文件。我也很确定它们是最新的。
就unix而言,您应该能够像这样设置TZ环境变量:
$ 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,所以我决定改变php.ini在Heroku的设置。这是一篇来自Heroku的文章:
https://devcenter.heroku.com/articles/custom-php-settings#php-runtime-settings
通过添加一个.user.ini文件到你的web-root,你可以适应你的应用程序的设置,例如通过添加日期。时间设定:
date.timezone = Europe/Berlin
我知道这不是全球使用的最佳解决方案,但它到目前为止是有效的,我的symfony应用程序现在只对中欧重要。