Time.now.to_date 明天回来,不是今天
Time.now.to_date is returning tomorrow, not today
我在 Heroku 上有一个 rails 应用程序,我认为我的时区配置正确(美国中部标准时间)。我希望 return 今天的日期如下:
Time.now.to_date
但是 return 如果我的时间是晚上 7 点之后,则改为明天的日期。在您配置的时区内获取今天日期的最佳方式是什么。
我认为您正在寻找符合给定时区的 Date.current。
勾选 ENV['TZ']
,这对您来说应该是 US/Central
或 America/Chicago
或类似的。空字符串表示 UTC。 Nil表示使用系统设置,可以通过:
$ readlink /etc/localtime
勾选 Time.now.zone
,根据季节应该是 CST
或 CDT
。
如果 TZ(或 /etc/localtime
符号链接)设置正确,我认为时间和日期应该都能满足您的期望。但我不完全确定,我向所有偶然发现此便条的人提出挑战,要求在世界上任何地点、任何一天的任何时间使用此代码 运行,你恰好是:
$ ruby -r time -e 'puts ENV["TZ"]+" "+Time.now.iso8601+" "+(Date.today == Time.now.to_date).to_s'
现在对我来说:
Europe/Budapest 2020-04-21T22:12:23+02:00 true
我希望行尾始终为真,但 Date 的文档对我来说非常晦涩。让我们实践一下。
如果你关心的话,我刚刚发现我可以使用以下 bash 脚本将我的位置转换为时区名称:
$ tzselect -c +47.6418+19.154 -n 1 <<<$'1\n1' 2>/dev/null
导致
Europe/Budapest
我在 Heroku 上有一个 rails 应用程序,我认为我的时区配置正确(美国中部标准时间)。我希望 return 今天的日期如下:
Time.now.to_date
但是 return 如果我的时间是晚上 7 点之后,则改为明天的日期。在您配置的时区内获取今天日期的最佳方式是什么。
我认为您正在寻找符合给定时区的 Date.current。
勾选 ENV['TZ']
,这对您来说应该是 US/Central
或 America/Chicago
或类似的。空字符串表示 UTC。 Nil表示使用系统设置,可以通过:
$ readlink /etc/localtime
勾选 Time.now.zone
,根据季节应该是 CST
或 CDT
。
如果 TZ(或 /etc/localtime
符号链接)设置正确,我认为时间和日期应该都能满足您的期望。但我不完全确定,我向所有偶然发现此便条的人提出挑战,要求在世界上任何地点、任何一天的任何时间使用此代码 运行,你恰好是:
$ ruby -r time -e 'puts ENV["TZ"]+" "+Time.now.iso8601+" "+(Date.today == Time.now.to_date).to_s'
现在对我来说:
Europe/Budapest 2020-04-21T22:12:23+02:00 true
我希望行尾始终为真,但 Date 的文档对我来说非常晦涩。让我们实践一下。
如果你关心的话,我刚刚发现我可以使用以下 bash 脚本将我的位置转换为时区名称:
$ tzselect -c +47.6418+19.154 -n 1 <<<$'1\n1' 2>/dev/null
导致
Europe/Budapest