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