我想更多地了解 DST 在 Debian(可能还有基于 Debian 的发行版)中如何工作。
想象一下:运行最新版本 debian 的计算机正在使用时区Europe/Zurich
。夏令时将从 开始2018-03-25 02:00
,这意味着它将从UTC+1
变为UTC+2
。如果计算机没有网络连接(基本上没有 NTP 服务器),那一天会发生什么?它仍然会将 UTC 偏移量更改为 +2 还是完全依赖于 NTP?为什么?
答案1
内核的时间概念不跟踪夏令时;通常我们让内核以 UTC 格式记录时间。这样做的优点是明确且简单。
面向用户的程序有一个时区,通常在TZ
环境变量中传递,以便它们具有一致的视图。这用于将内部表示形式转换为用户满意的形式或从用户满意的形式进行转换。
如果您这样做,您可以看到效果
TZ=Europe/Zurich ls -logd
TZ=Australia/Perth ls -logd
相同的时间戳有两种不同的方式呈现。
夏令时调整保存在时区数据库它已安装在您的系统上。只要这是正确的,夏季时间的转换与 UTC 时间的转换方式将与冬季时间(在采用 DST 的地区)不同。时区数据库了解过去的所有规则,并对未来有很好的了解,除非政客开始干预。
仅当规则更改并且必须安装更新的时区数据库时,您才需要外部连接。
答案2
系统会根据配置的时区参考存储在中的数据来更改其时间偏移量。tzdata
包裹。它不需要外部时间源。
外部时间源提供独立于配置的时区以及是否启用夏令时的参考时间(否则您将只能使用配置为与要更新的系统使用相同时区的 NTP 服务器) 。
答案3
时区和 DST 由操作系统处理。 NTP 服务仅提供时间同步,并且与计算机所在的时区无关。
因此,即使没有网络连接,您的计算机也会在正确的时刻正确打开或退出夏令时(假设时间正确)。