我有一个关于为不同时区的用户存储时间的问题。我的措辞可能有点绕,但请耐心等待。如果我只是将用户访问我的网络应用程序的 UTC 时间存储到 MySql 中,那么我可以忽略不同的时区吗?
例如,假设有两个用户生活在世界各地。其中一位建议两人在他的时间 4:00 在网络应用程序中聊天。因此,另一个人可能必须在她的时间 1:00 访问,以便双方都能成功会面。如果我在 Mysql 中调用 UTC_Time(),当他们每个人在各自的时间登录到 Web 应用程序时,我会为他们两个获得一个通用的 4:00 吗?非常感谢。
最佳答案
您已经进入了更复杂的编程领域之一。
如果您存储到数据库中的时间源自 MySQL 中的“now()”, 然后您将在正确的时间存储事件,然后使用 UTC 刻度来测量它。对于国际应用程序来说,这可能是 做正确的事。
如果一个人只是说“4:00”,则该数字不会改变,除非您提供 页面上的一个表格用于输入时间,然后可用于计算。 在这种情况下,您可以询问每个用户其时区(例如,在注册时询问一次), 并计算 UTC 以保存“4:00”,例如“11:00 UTC”。如果其他用户 登录后,您可以根据存储的 UTC 计算他的本地时间。
顺便说一句,如果您使用 Linux,您可以在 UTC 而不是本地时间上运行系统(它仍然显示本地时间,但内部时钟在 UTC 上运行)。如果您的系统是 Windows 或双引导系统,请勿执行此操作。 Windows 不喜欢在不同时区运行的系统。
来自 MySQL 手册:
CONVERT_TZ() converts a datetime value dt from time zone given by from_tz to the time zone given by to_tz and returns the resulting value
即像这样:
SELECT CONVERT_TZ('2004-01-01 12:00:00','GMT','MET');
-> '2004-01-01 13:00:00'
如果您将时间/日期存储为 GMT,并且您的 friend 注册并选择了“MET”
关于mysql - 在数据库中存储不同时区用户的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24719068/