【发布时间】:2012-03-10 07:29:35
【问题描述】:
在我对如何处理日期和时间进行全面重构之前,我想问问这是否可行。
为了表达我的问题,这是我的问题...... 我将用户采取的“操作”存储在历史记录表中。这些操作上有一个时间戳。用户可以来自世界各地,因此有不同的时区。我想显示历史记录中的项目并显示当地时区的时间戳。
另外,我知道我可以使用日期时间字段并简单地存储 UTC 时间格式,但我选择使用时间戳,因此我可以将默认值设置为当前时间。
这对我的问题有用吗?
我的服务器时区是洛杉矶
将时间戳存储为 MySQL 中的时间戳。我的理解是时间戳始终存储为 UTC。记录将默认存储为 creation_date 或者我将明确设置 UTC_TIMESTAMP()。实际上,数据库中的所有记录都是UTC。
当用户登录时,我将获取他们的时区(我将其作为用户设置存储在数据库中)。 对于此示例,假设此人在纽约。
这是我的问题所在。这些都行吗?
- a) 获取历史数据。所有时间戳将自动从 UTC 转换为洛杉矶时间。 Foreach 历史项目,将洛杉矶时间戳转换为纽约时间戳并回显。
或
- b) 将 php 时区“date_default_timezone_set”设置为纽约。获取历史数据。所有时间戳仍然是洛杉矶时间,服务器仍然是洛杉矶时间。对于每个历史项目,只需回显时间戳,因为“date_default_timezone_set”会自动将洛杉矶时间戳转换为纽约。
选项 4b 会起作用吗?有没有更好的方法将洛杉矶时间转换为纽约时间?
一般来说有没有更好的方法来做到这一点?
【问题讨论】:
-
以 UTC 存储,向用户显示本地是主流解决方案。
标签: php mysql timestamp utc datetime-conversion