我正在专门使用 Luxon。然而,这个问题适用于所有日期/时间库。
如果一个国家(比如美国)决定全年保持夏令时会怎样?到目前为止,图书馆必须包含时区和 DST 日期列表。如果某个国家/地区的 DST 发生变化,是否需要使用更新的 DST 值发布新版本的库?
不一定是新图书馆,但至少是新数据库:https://www.iana.org/time-zones.
IANA 不是唯一的时区数据库,但它可能是使用最广泛的。它每年更新几次。去年(2022 年)有 7 次更新。
没有。 Luxon 对时区何时具有 DST 的感知并非来自其自己的数据文件;它来自 JS 运行时(浏览器或 Node),它通过 Intl API 公开它们。反过来,Intl API 使用来自主机操作系统的 TZ 规则。因此,当操作系统使用新规则更新时,Luxon 将获得这些新规则。
这取决于图书馆。
有些图书馆捆绑了自己的时区数据,需要定期更新才能接收此类更新。示例包括:
其他图书馆从他们运行的主机环境中获取他们的时区数据,这可能反过来从图书馆或主机操作系统中获取他们的时区数据。示例包括:
Intl
,最常通过 ICU 实现,由浏览器(或 Node.js)分发zoneinfo
(内置于 Python),如果可用,则使用主机操作系统时区数据,否则使用 python tzdata
包。java.time
(内置于 Java),它使用随 Java Runtime 分发的时区数据TimeZoneInfo
(内置于 .NET),它使用来自主机操作系统的时区数据这些列表并不全面。
数据的最终来源通常是 IANA TZ 数据库。所有发布自己时区数据的图书馆都从那里派生。
不过,微软也依然单独维护着Windows的时区数据。 Windows 平台上的 .NET 和其他较旧的 Windows 技术(例如 Win32 API)仍在使用它。