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