Time.now.to_date明天回来,而不是今天

时间:2015-03-16 00:45:11

标签: ruby-on-rails date heroku time

我在Heroku上有一个rails应用程序,我认为我已经正确配置了时区(美国中央标准时间)。我希望以下内容返回今天的日期:

Time.now.to_date

但相反,如果是在我的时间晚上7点之后,明天就会回来。什么是在您配置的时区内获得今天约会的最佳方式。

2 个答案:

答案 0 :(得分:1)

我认为您正在寻找尊重给定时区的Date.current

答案 1 :(得分:0)

为您选择ENV['TZ']US/Central或类似的America/Chicago。空字符串表示UTC。 Nil表示使用了系统设置,您可以通过以下方式获取:

$ readlink /etc/localtime

根据季节检查应为Time.now.zoneCST的{​​{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