WordPress 5.3 改进了日期/时间组件

日期/时间组件包含时间和日期信息的所有输入、输出和存储。它的代码可以追溯到早期版本的PHP 4实现,并且经过了部分PHP 5改进。

在一年多的WP版本迭代中,我们运行了一个名为“ wp_date”的项目来修复和改进该组件,这些改进将集成到 WordPress 5.3。

  1. 所有现有代码将具有更正确和可靠的操作。我们修复了错误,添加了单元测试,并更正了许多函数的内联文档。
  2. WP 5.3+代码将可以访问新的API函数,以方便使用和实现PHP互操作性。

新的API函数

通过将核心版本所需的PHP版本提高到5.6,我们改进了组件的API。

统一时区检索

  • wp_timezone_string()无论(timezone_stringgmt_offset选项) 设置如何,都可以通过一种单一的方式检索站点时区。可能返回Region/Location字符串或 ±NN:NN偏移量。现在,两者都是内核支持的PHP版本的有效输入。
  • wp_timezone()检索站点时区作为DateTimeZone对象。

PHP互操作性

  • current_datetime()检索当前时间作为DateTimeImmutable对象。
  • get_post_datetime()检索文章时间作为DateTimeImmutable对象。
  • get_post_timestamp() 检索文章时间作为Unix时间戳。

逐步淘汰WP时间戳

日期/时间组件依赖于所谓的“ WordPress时间戳”,即带有时区偏移量的Unix时间戳的总和。这导致许多错误,并且与上游PHP或任何外部系统缺乏互操作性。内联文档错误地将它们称为Unix时间戳。

没有向后兼容性完成,就不可能删除WP时间戳。但是我们在以下方面取得了重大进展:

  • 减少其在核心的使用;
  • 更正无效的内联文档;
  • 提供使用真实Unix时间戳的新API。

不再推荐

  • 不要将时间作为WP时间戳获取:
  • 不要根据WP时间戳本地化时间:
    • date_i18n( DATE_RFC3339, $timestamp + $offset )
  • 不要持久性地存储WP时间戳;
  • 不要比较WP时间戳。

推荐的方式

  • 检索时间作为Unix时间戳或DateTimeImmutable对象:
    • time()
    • current_datetime()
    • get_post_datetime()
    • get_post_timestamp()
  • 根据Unix时间戳本地化时间:
    • wp_date( DATE_RFC3339, $timestamp )
  • 存储时间精确的Unix时间戳或格式,例如 DATE_RFC3339 ;
  • 比较DateTimeInterface同一时区中的Unix时间戳,对象或字符串可比较的日期。

小结

日期/时间核心组件已收到急需的修复程序和一系列改进。带有时间和日期的WordPress平台上的代码将更加方便和可靠。

如果你对以上改进或组件有疑问,请关注WordPress Slack中的#core-datetime频道。

倡萌

一个文科IT宅男,喜欢折腾WordPress和被它折腾 ^_^

暂无评论

发表评论