gpt4 book ai didi

ruby - Ruby 中的 UTC 和本地时区

转载 作者:太空宇宙 更新时间:2023-11-03 18:04:47 27 4
gpt4 key购买 nike

我位于东部时间 (ET) 时区。比 UTC 时间晚 4 小时。 UTC 是世界调整时钟和时间的标准。我正在使用 Mac OSX。

我正在阅读这个特别的 article .似乎建议如果未设置 TZ 环境变量,Ruby 默认使用 UTC。他举了一个例子:

ENV["TZ"]
#=> nil

Time.now
#=> 2015-12-08 10:30:00 -0200

ENV["TZ"] = "America/Los_Angeles"
#=> "America/Los_Angeles"

Time.now
#=> 2015-12-08 04:30:14 -0800

设置环境变量后,Ruby 将使用该时区。所以我在 irb 中试了一下:

ENV["TZ"]
=> nil
Time.now
=> 2018-03-29 16:30:21 -0400
ENV["TZ"] = 'Eastern Time (US & Canada)'
=> "Eastern Time (US & Canada)"
Time.now
=> 2018-03-29 20:30:40 +0000

现在是下午 4:30 或军事时间的 16:30。所以实际上当未设置 TZ 环境变量时,它给出的是本地时间,而不是 UTC 时间。在我将变量设置为我的时区后,它给出了一个完全错误的时间。为什么在未设置环境变量时无法获得 UTC 时间,为什么在将环境变量设置为我的时区时会得到错误的时间?

最佳答案

这是不正确的。 Ruby 将从您的计算机获取时区,而不是默认使用 UTC。

至于为什么

ENV["TZ"] = 'Eastern Time (US & Canada)'

没有将时间更改为东部时间是因为正确的做法是:

ENV["TZ"] = 'US/Eastern'

ENV["TZ"]中的值不是nil,但不被识别时,Ruby默认为UTC:

Time.now.zone # => "EEST"

ENV["TZ"] = 'Some gibberish'
Time.now.zone # => "UTC"

ENV["TZ"] = 'US/Eastern'
Time.now.zone # => "EDT"

关于ruby - Ruby 中的 UTC 和本地时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49564626/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com