我的环境变量 TZ 设置为 :/etc/localtime
。文件/etc/localtime
是指向文件/usr/share/zoneinfo/America/Chicago
的符号链接。到目前为止,我正在使用它来获取本地时间对象:
Time.local(
Crystal::System::Time.load_localtime.not_nil!
)
# 2019-07-16 20:46:50 -05:00
因为以下内容给了我一个设置为 UTC 的时间:
Time.local # 2019-07-17 01:46:50 UTC
Crystal 标准库是否应该返回 TZ=":/etc/localtime" 的 UTC 位置,或者我是否应该手动将 TZ 设置为时区(例如"美国/芝加哥"(?
Time::Location
仅支持相对于 zoneinfo 数据库的路径的TZ
值(例如:America/Chicago
(。它目前无法解析绝对路径。不过,这可以作为功能请求添加。
Time.local
给你一个UTC
的时间,仅仅是因为Time::Location.load_local
无法理解ENV["TZ"]
的值并默认为 UTC。如果您只是取消设置TZ
,它应该按预期工作。
如果未设置 TZ
,则默认为 /etc/localtime
引用的值。因此,您的自定义工作根本不需要。特别是Crystal::System::Time
不应该直接从用户代码调用。