有很多关于处理日期的建议。我想澄清一些事情。让我们说:
现在,用户想要查询数据库中的日期间隔:
我知道用PHP可以实现,但在这种情况下不需要关心mysql的时区设置 - 只有php的。系统将是64位,因此用尽存储日期的空间不是问题。但是......
这是否会引发任何其他严重问题,例如DST更改或其他什么?
答案 0 :(得分:2)
Unix时间戳与时区无关。
这也是您可以更改此步骤的原因:
使用这些值将时区转换为UTC并获取时间戳
进入这个:
将值转换为Unix时间戳
虽然在数据库中存储时间戳(例如MySQL)非常简单。您可以确保PHP具有Unix时间戳,如果您将:
FROM_UNIXTIME()
MySQL的函数保存值(将Unix时间戳作为参数,您将根据MySQL的设置接收日期时间),UNIX_TIMESTAMP()
MySQL的函数检索值(给出字段名称或值作为参数),这样你就可以根据存储在数据库中的日期时间得到Unix时间戳(整数)根据MySQL的设置。请记住使用TIMESTAMP
列类型来存储时间戳。这样,时间将以与时区无关的方式存储,仅根据MySQL的设置显示。
答案 1 :(得分:0)
Tadeck是正确的,Unix时间戳与时区无关。
但是在整个应用程序中使用时间戳时,您应该将数据库中的时间戳存储和使用为纯INT。在应用程序级别(在PHP中)转换为本地时区和从本地时区转换。这允许您只关注PHP中的时区而不是2系统中的时区。它还可以简化在应用程序级别为单个用户设置时区。