【发布时间】:2017-05-08 04:26:56
【问题描述】:
我是 php 新手,我看到一些程序员通过 php date() 或 mysql NOW() 将日期时间存储在数据库中,或者将列作为时间戳。我想知道这三者之间的区别是,以及如何将这三种格式转换为全球用户当地时间。
【问题讨论】:
-
谢谢大家,但我很困惑如何将此格式转换为用户本地时间
我是 php 新手,我看到一些程序员通过 php date() 或 mysql NOW() 将日期时间存储在数据库中,或者将列作为时间戳。我想知道这三者之间的区别是,以及如何将这三种格式转换为全球用户当地时间。
【问题讨论】:
timestamp字段,没有
datetime 字段数量的限制..onupdate current timestamp 或 current
timestamp.. 的时间戳字段,这些字段类型不影响 date insert
method..date()函数你可以设置你自己的
日期格式..但不在now()
对于日期格式的语法检查这篇文章https://www.w3schools.com/php/func_date_date.asp
最后Datetime and timestamp是mysql
date() 和NOW()is php
【讨论】:
有几点需要考虑:
TIMESTAMP 列仅限于 1931 年到 2038 年之间的日期,因为它们是 32-bit timestamp values。DATETIME 列可以达到 9999 年。虽然它们不会像 TIMESTAMP 值默认那样自动填充,但它们的限制较少,您可以在每个表中添加任意数量。在插入时间时,您的 PHP 时钟和数据库时钟可能会略有不同。使用NTP 可以帮助缩小差距,但确实会发生偏差。 PHP 的 date() 函数需要格式化为 ISO-8601 format 以便插入 (YYYY-MM-DD HH:MM:SS)。 MySQL NOW() 函数没有,与UTC_TIMESTAMP() 相同。
出于以下几个原因,我强烈建议您在数据库中使用 UTC 时间:
因此,使用 UTC 存储并根据用户的时区偏好或您的应用程序的一些合理默认值呈现为本地时间。请记住,时间格式通常是一件繁琐的事情,每个国家/地区都有不同的日期格式标准,甚至一个国家/地区也可能对长格式、短格式或数字格式有多种偏好。
【讨论】: