我正在设置一个 docker 容器,有两个地方设置时区:
- /etc/当地时间
- /etc/时区
谁能解释一下它们之间有什么区别以及两者的用途是什么?
答案1
/etc/timezone
是您所在时区的基于文本的表示形式。这可以表示为与 GMT/UTC 的偏移量,但更常见的是,它是指向相应时区数据文件的路径/usr/share/zoneinfo
(例如,如果您在大多数时间)在美国东部的地方,这将是America/New_York
或US/Eastern
)。这样做的主要目的是确保在更新/etc/localtime
数据文件时正确更新(尽管有些系统会创建指向正确文件的符号链接),并为时区提供一个快速用户友好的名称(是比或)更加用户友好。只有某些系统实际使用此文件。/usr/share/zoneinfo
/etc/localtime
US/Eastern
EST
EDT
/etc/localtime
是计算相对于 UNIX 时间的确切规则的二进制表示(内核使用的内部表示,自 1970-01-01 00:00:00 UTC 以来以秒为单位)。这包括与 UTC 的正常偏移量、夏令时规则(何时开始和结束以及应用的偏移量)、闰日规则以及注释已观察到的闰秒数等内容。命令(及其在各种编程语言中的等效函数)之类的东西会使用它date
来准确地显示本地时间。所有具有传统用户空间的 Linux 系统都使用此文件。
答案2
时区告诉您的系统您在世界上的哪个位置。即GMT-4
或GMT+2
(取决于您在地球上的确切位置)。
当地时间告诉您的系统您所在位置的准确时间。