我是php的新手,我在php date()
或mysql NOW()
的数据库中看到了一些程序员存储日期时间,或者将列作为时间戳。我想知道这三者之间的差异以及如何将这三种格式转换为全球当地用户。
答案 0 :(得分:0)
需要考虑以下几点:
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进行存储,并根据用户的时区偏好或应用程序的某些合理默认值将其渲染为本地时间。请记住,时间格式化通常是一个繁琐的事情,每个国家/地区都有不同的日期格式标准,甚至一个国家/地区也可能有多种形式的长格式,短格式或数字格式。