关于时间戳最佳实践:时间戳最佳实践-php,mysql

Timestamp Best Practices - PHP, MySQL

本问题已经有最佳答案,请猛点这里访问。

我到处找了找,没有找到我问题的具体答案。

我想知道存储时间戳信息的最佳实践。

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

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

我的大脑快疯了,因为我觉得我把这件事弄得太复杂了。

我应该能够使用unix时间戳,然后使用-0800或-0300进行调整。

我是否将用户时区偏移量存储在他们的配置文件信息中?我是否用日志条目存储-0300?

如有任何意见,我们将不胜感激!


您混合了客户机时区和服务器时区。

只要你不关心用户的位置,只要你不改变服务器时区,你就完全没有问题。您可以在mysql和php中设置一个默认时区,这个时区将被使用,独立于访问者的时区。

如果你想尊重访客的时区,它会变得稍微复杂一些。您需要将时间戳从一个时区转换为另一个时区。如果您想用PHP实现这一点,可以在PHP手册中找到相关信息。如果您对MySQL如何在内部存储日期(时间戳和日期时间类型之间的差异)感兴趣,可以阅读此so线程,这将打开使用某些MySQL功能的可能性,并且在实现全局项目时,您一定要考虑到这些功能。


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

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


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