【问题标题】:Are 'US/Eastern' and 'US/Central' and 'US/Pacific' deprecated for strftime or just PHP?'US/Eastern' 和 'US/Central' 和 'US/Pacific' 是否已弃用 strftime 或只是 PHP?
【发布时间】:2012-03-01 20:54:36
【问题描述】:

我有一个使用的 shell 脚本(准确地说是 zsh)

strftime "%I:%M %p %Z (%a, %b %d)" "$EPOCHSECONDS"

生成“当前时间”,例如

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

这需要能够显示几个不同的美国时区的时间,所以我一直在使用“US/Eastern”、“US/Central”和“US/Pacific”,如下所示:

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,看到上面写着

请不要使用此处列出的任何时区(UTC 除外), 它们仅出于向后兼容的原因而存在。

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

【问题讨论】:

    标签: timezone deprecated zsh strftime


    【解决方案1】:

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

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

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

    话虽如此,我认为这些名字永远不会消失。在时区邮件列表中,它们绝对总是被称为“向后兼容”,而不是“弃用”,并且打算保留下来,尽管 PHP 有什么建议。

    【讨论】:

      猜你喜欢
      • 2015-01-26
      • 2020-01-02
      • 2019-07-21
      • 2022-01-24
      • 1970-01-01
      • 2012-04-22
      • 2017-06-07
      • 2018-06-28
      • 1970-01-01
      相关资源
      最近更新 更多