gpt4 book ai didi

timezone - 'US/Eastern' 和 'US/Central' 和 'US/Pacific' 是否不推荐用于 strftime 或只是 PHP?

转载 作者:行者123 更新时间:2023-12-04 07:26:57 28 4
gpt4 key购买 nike

我有一个 shell 脚本(准确地说是 zsh),它使用
strftime "%I:%M %p %Z (%a, %b %d)" "$EPOCHSECONDS"
生成“当前时间”,例如

“02:45 PM CST(星期四,3 月 1 日)”

这需要能够在几个不同的美国时区显示时间,所以我一直在使用“美国/东部”、“美国/中部”和“美国/太平洋”,如下所示:

export TZ='US/Eastern'
strftime "%I:%M %p %Z (%a, %b %d)" "$EPOCHSECONDS"

这似乎工作得很好,我更喜欢使用 TZ='America/CityName' 因为它不需要我知道哪个城市在哪个 TZ,我只需要告诉它我想要哪个 TZ。

然而,我碰巧遇到了 http://www.php.net/manual/en/timezones.others.php看到它说

Please do not use any of the timezones listed here (besides UTC), they only exist for backward compatible reasons.



我不知道美国/地区名称有什么问题,但我很想知道在可预见的将来使用它们是否可能会导致问题,或者它们仍然可以安全使用吗?是不是只有 PHP 不喜欢它们,还是每个人都在远离它们?

最佳答案

在 Olson 数据库中命名时区的标准格式是 Continent/City。您提到的“旧”名称,如 US/Eastern、US/Central 等,在 tzdata 源发行版(在“向后”文件中)列为向后兼容链接。根据文件顶部的注释,这些名称可能在 1993 年末成为向后兼容链接。

我想我记得读过这个标准被采用是因为它被认为更稳定:地缘政治(国家)边界改变,城市永远不会移动。也可能是因为像“Eastern”和“Central”这样的名称被认为更容易混淆,因为它们在世界不同地区表示不同的时区。但是,我目前找不到任何对命名原理的引用,所以不要引用我的话。

大陆/城市风格的名称是首选。请注意,像 Debian 和 Ubuntu 这样的操作系统会要求您使用这些名称选择系统时区(除非它们在安装时自动检测到),使用这些名称您实际上不需要像您说的那样“知道哪个城市在which TZ"因为城市名称是时区名称的一部分!因此,如果您碰巧学习了大陆/城市名称而不是国家/地区名称,或者除了国家/地区名称之外,您已经没问题了。

话虽如此,我不认为这些名字会消失。在时区邮件列表中,它们肯定总是被称为“向后兼容性”,而不是“不推荐使用”,并且打算保留下来,不管 PHP 推荐什么。

关于timezone - 'US/Eastern' 和 'US/Central' 和 'US/Pacific' 是否不推荐用于 strftime 或只是 PHP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9523917/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com