我在Heroku上有一个rails应用程序,我认为我已经正确配置了时区(美国中央标准时间)。我希望以下内容返回今天的日期:
Time.now.to_date
但相反,如果是在我的时间晚上7点之后,明天就会回来。什么是在您配置的时区内获得今天约会的最佳方式。
答案 0 :(得分:1)
我认为您正在寻找尊重给定时区的Date.current。
答案 1 :(得分:0)
为您选择ENV['TZ']
或US/Central
或类似的America/Chicago
。空字符串表示UTC。 Nil表示使用了系统设置,您可以通过以下方式获取:
$ readlink /etc/localtime
根据季节检查应为Time.now.zone
或CST
的{{1}}。
如果正确设置了TZ(或CDT
符号链接),我认为时间和日期都应该给您您所期望的。但是我不太确定,我挑战每个绊脚石的人,无论您在何时何地,都可以在世界上任何地方的任何地方运行此代码:
/etc/localtime
它说:
$ ruby -r time -e 'puts ENV["TZ"]+" "+Time.now.iso8601+" "+(Date.today == Time.now.to_date).to_s'
我希望这一行的结尾总是正确的,但是Date的文档对我来说还是很模糊。让我们在实践中看看。
以防万一,我才发现我可以使用以下bash脚本将我的位置转换为时区名称:
Europe/Budapest 2020-04-21T22:12:23+02:00 true
导致
$ tzselect -c +47.6418+19.154 -n 1 <<<$'1\n1' 2>/dev/null