代码之家  ›  专栏  ›  技术社区  ›  dgo.a

当TZ=“/etc/local time”时,获取本地时间的正确方法是什么?

  •  0
  • dgo.a  · 技术社区  · 7 年前

    :/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 standard LIB是为TZ=“/etc/localtime”返回UTC位置,还是手动将TZ设置为时区(例如“America/Chicago”)?

    0 回复  |  直到 7 年前
        1
  •  2
  •   Johannes Müller    7 年前

    Time::Location 仅支持 TZ 是相对于区域信息数据库的路径(例如: America/Chicago

    Time.local 给你一段时间 UTC 只是因为 Time::Location.load_local 无法理解的价值 ENV["TZ"] 默认为UTC。如果你只是不安 ,它应该按预期工作。

    TZ公司 /etc/localtime . 所以你的定制工作根本不需要。尤其是 Crystal::System::Time 不应该直接从用户代码调用。