PHP处理时间和时区需注意以下三点!

推荐:《PHP视频教程》

PHP

当被问及是否很难处理日期和时区时,超过 50%的开发人员回答“是”。我的猜测是,那些对这项民意调查说“不”的人要么已经明白了这一点,要么他们没有与必须迎合全球用户的平台/应用程序合作。

无论如何,我想创建一篇博客文章,详细介绍我是如何处理日期和时区的。我想只要遵循这些简单的规则,你就不会那么头疼了。

规则 #1 - 在数据库中存储 UTC 格式的 DATETIMES 和后端代码。

所有与日期相关的数据都要保持一致,这一点很重要。在数据库中存储日期时,它们应始终使用 UTC 格式。如果你不熟悉什么是 UTC,那么它是所有主要时区所依据的主要时间标准。主要时区只是 UTC 的偏移量。此外,在使用后端代码处理日期时,请确保日期时间为 UTC 格式。

规则 #2 - 使用前端代码将 DATETIMES 转换为用户的本地时区。

虽然你的后端将返回 UTC 时间,但是前端可以很容易地将这些时间转换为用户的本地时区。这样做会在后端(以UTC为句柄)和前端(以用户本地时间为句柄)之间灌输职责分离。通过使用 ISO 8601 等标准,保持前端日期时间格式的一致性。当你向后端发送请求时,请以 ISO 8601 格式发送日期时间,以便后端可以轻松地将其转换为相应的 UTC 日期时间。

规则 #3 - 使用日期时间库。

在所有主要的 Web 开发语言/框架中都存在用于更好地处理日期时间的库。这些使得基于标准(例如 ISO 8601 )进行转换或格式化变得容易得多。在JavaScript 中要查看的一个示例库是 Moment.js。 在 PHP 中要查看的一个示例库是 Carbon。

通过遵循这些规则,你应该在如何处理日期时间方面灌输一个有效的流程。

资料:

  • UTC时间标准 - https://en.wikipedia.org/wiki/Coordinated_Universal_Time
  • ISO 8601 时间格式标准 - https://en.wikipedia.org/wiki/ISO_8601
  • Moment JS 日期时间库 - https://momentjs.com/
  • Carbon PHP 日期时间库 - https://carbon.nesbot.com/docs/

原文地址:https://dev.to/corykeane/3-simple-rules-for-effectively-handling-dates-and-timezones-1pe0

译文地址:https://learnku.com/php/t/50855