谈谈时区

谈谈时区

💡 原文中文,约2300字,阅读约需6分钟。
📝

内容提要

本文以Go为例,分析了Go中的时区使用。Go使用LoadLocation函数读取时区,时区文件是一个以TZif开头的二进制文件,存储在/usr/share/zoneinfo/目录中。可以使用import _ "time/tzdata"将时区文件编入程序中。如果不需要特别动态的时区,可以使用FixedZone函数提供时区名称和偏移。本地时区在首次使用时才真正初始化。

🎯

关键要点

  • Go中使用LoadLocation函数读取时区。
  • 时区文件是以TZif开头的二进制文件,存储在/usr/share/zoneinfo/目录中。
  • 可以使用import _ "time/tzdata"将时区文件编入程序中。
  • 如果不需要动态时区,可以使用FixedZone函数提供时区名称和偏移。
  • 本地时区在首次使用时才真正初始化。
  • 在Unix系统中,时区文件通常存储在/usr/share/zoneinfo/目录中。
  • Alpine环境中没有时区定义文件,需要特别处理。
  • time.Now使用的时区为Local,即运行程序所在机器的时区。
  • Go优先尊重TZ环境变量指定的时区,未指定时使用/etc/localtime文件。
  • Local在首次使用时通过initLocal函数初始化。
  • tzdata详细定义了历史时区的变更情况,包括夏令时和闰秒。
➡️

继续阅读