时间戳最佳实践 - PHP,MySQL

时间:2014-02-22 23:32:01

标签: php mysql unix timestamp

我已经四处寻找并且没有找到我问题的具体答案..

我想知道存储时间戳信息的最佳做法。

实施例: user1在美国东部时间下午3:00登录佛罗里达州(-0500) 管理员一小时后从加利福尼亚(-0800)下午4:00登录系统

我希望管理员在屏幕上看到日志并看到用户1在1小时前登录..

我的大脑变得疯狂了,我觉得我已经过度复杂了......

我应该可以使用UNIX时间戳,然后使用-0800或-0300进行调整。

我是否将用户时区偏移存储在他们的个人资料信息中? 我是否将-0300与日志条目一起存储。

非常感谢任何输入!

3 个答案:

答案 0 :(得分:1)

您正在混淆客户端时区和服务器时区。

只要您不关心用户所在的位置,只要您不更改服务器时区,就绝对没有问题。您可以在MySQL和PHP中设置默认时区,并且将使用此时区,与访问者的时区无关。

如果您想尊重访问者的时区,则会稍微复杂一些。您需要将时间戳从一个时区转换为另一个时区。如果您想通过PHP实现此目的,可以在PHP manual中找到有关该信息的信息。如果您对MySQL如何在内部存储日期(TIMESTAMP和DATETIME类型之间的差异)感兴趣,可以阅读this SO thread,这样就可以使用某些mysql的功能,并且在实现时应该考虑到这一点。全球项目。

答案 1 :(得分:0)

可以在PHP中动态配置时区,因此您无需在数据库中存储时间偏移。存储unix时间戳是一个很好的解决方案。

答案 2 :(得分:0)

您可以将时间戳存储为INTEGER数据类型。

然后,您可以在客户端使用JS来获取用户的时区。