猿问

php时区会一直存在吗?

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

  • 每次都作为 Unix 时间戳存储在数据库中

  • 每次操作都是使用时间戳完成的

  • 它作为用户友好格式存在的唯一时间是正确的,当它显示给用户时

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

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

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


繁星coding
浏览 90回答 2
2回答

翻翻过去那场雪

PHP 时区基于IANA TZ 数据库,并通过PECL 包提供timezonedb。截至本文发布的当前版本为 2019.3,与IANA当前的 2019c 版本一致。timezonedb 包自 2005 年以来一直由Derick Rethans维护,虽然不能保证 - 没有理由相信他或其他PHP 核心贡献者不会无限期地继续此维护。请注意,每个 PHP 版本都包含发布时最新版本的 timezonedb。所以在大多数情况下,您不需要自己更新包。只需让您的 PHP 实例与最新版本保持同步,您将获得包含的最新时区数据。未来更改的示例America/Guatamala将在TZ 数据库讨论列表本身的上游处理。该项目是由IETF BCP 175 / RFC 6557管理的核心关键互联网基础设施。这个项目过时的风险几乎为零,因为几乎每个主要操作系统、编程平台以及无数库和独立项目都依赖它。至于您的自定义库,很高兴您观看了 Computerphile 视频,但您还应该阅读 Stack Overflow 上的时区标签 wiki - 特别注意标有“时区!=偏移”的部分。将友好名称分配给固定偏移量是不够的,因此需要维护时区及其随时间变化的数据库。从视频中重申,请不要使用自定义时区实现 - 你最好依赖他人的工作。在这种情况下 - 使用 PHP 的内置时区功能。

慕尼黑5688855

正如您在此处看到的,PHP 非常活跃,并且将在未来几年内得到维护。因此,如果要进行更改,将在最早的时间进行沟通。在上一个版本中,某些东西已被标记为弃用,然后在后续版本中被完全删除。因此,如果将删除时区常量,您将在未来版本中收到不推荐使用的通知。在删除之前,如果不将其标记为已弃用,则不会删除任何组件。这样做可以让您有更多的时间来寻找解决方案。
随时随地看视频慕课网APP
我要回答