php 时区会一直存在吗?

Will php timezone always be there?

我正在尝试将 PHP 的日期时间和时区功能集成到我的应用程序中。我现在的工作:

是的,我知道 MySQL 有一个内部日期时间原始对象,但我不完全理解它是如何工作的,而且以这种格式存储时间似乎很痛苦。

我还编写了自己的非常简单的时区库,其中包含文字 (-12, 11) 小时偏移量以及为每个偏移量指定的一些友好名称。这应该在以后更改为完整的时区库,因为我知道创建新时区库的痛苦 (https://www.youtube.com/watch?v=-5wpm-gesOY)。我试过 PHP 的内部时区库,一切似乎都运行良好。

PHP 提供了规范的时区列表,可在 DateTimeZone::listIdentifiers() 访问。我有点希望 PHP 本身会与一些外部计时数据库进行通信,以便在任何国家更改其时区详细信息时动态更改时区。我的问题是,这真的会发生吗?如果确实发生了,是否可以保证特定时区(比如 America/Guatemala)随着时间的推移仍然会被 PHP 识别并且在时区更改时不会抛出错误?

如您所见 here,PHP 非常活跃,并将在未来几年内得到维护。因此,如果要进行更改,将尽早传达。在上一个版本中,在下一个版本中将它们完全删除之前,已将其标记为已弃用。因此,如果要删除时区常量,您将在未来的版本中收到弃用通知。在删除之前,如果不将其标记为已弃用,则不会删除任何组件。这样做可以让您有更多的时间来寻找解决方案。

PHP 时区基于 IANA TZ Database, and delivered via the timezonedb PECL package. The current version as of this posting is 2019.3, which aligns with IANA's current 2019c release. The timezonedb package has been maintained by Derick Rethans since 2005, and while there is no guarantee - there is no reason to believe that he or another PHP core contributor 不会无限期地继续此维护。

请注意,PHP 的每个版本都包含发布时的最新版本的 timezonedb。所以在大多数情况下你不需要自己更新包。只需让您的 PHP 实例与最新版本保持同步,您就会获得最新的时区数据。

America/Guatamala 的未来更改示例将在 TZ database discussion list itself. That project is core critical Internet infrastructure governed by IETF BCP 175 / RFC 6557 的上游处理。这个项目过时的风险几乎为零,因为几乎每个主要操作系统、编程平台以及无数库和独立项目都依赖它。

至于您的自定义库,很高兴您观看了 Computerphile 视频,但您还应该阅读 Stack Overflow 上的 time timezone tag wiki - 特别注意标有 "Time Zone != Offset" 的部分。为固定偏移分配一个友好的名称是不够的,因此为什么需要维护时区数据库及其随时间的变化。

从视频中重申,请不要使用自定义时区实现 - 依赖他人的工作会更好。在这种情况下 - 使用 PHP.

中的内置时区功能