有一种更简单的方法来定义时区的值,奥尔森数据库。
它一直支持 19 年 (Paul Eggert)Solaris、HP-UX 和 Tru64。
正如第一个链接所示,AIX 当然支持它。和所有 BSD 的。
但 POSIX 中却没有提及。
很简单:
TZ=America/New_York
它更好,因为它不受 DST 变化的影响。并考虑到不同年份的夏令时变化。
$ TZ="America/New_York" faketime "Sun Mar 10 03:00:00 2012" date &&
> TZ="America/New_York" faketime "Sun Mar 10 03:00:00 2013" date
Sat 10 Mar 2012 03:00:00 AM EST
Sun 10 Mar 2013 03:00:00 AM EDT
有关的:
答案1
据我所知,还没有这样的计划;没有开放的错误奥斯汀集团错误跟踪器参考时区数据库,它还没有在邮件列表中讨论过,也没有出现在会议纪要中。
POSIX 在 2019 年进行了改进,纳入了 Olson 数据库中的一项功能,时间超出了 0-24 范围;看错误 1252了解详情。
严格来说,据我了解,应使用TZ=:...
;请求 Olson 条目。TZ
以冒号开头的值被指定为实现定义的。
答案2
我记得电话会议里有过相关的较长时间的讨论。
已经讨论过是否应该包括 olson 数据库。由于数据库的复杂性,无法找到包含规范副本或引用该规范的协议。
因此,基于 olson 的方法仍然是超出范围的允许扩展。