mysql - 在数据库中存储不同时区用户的时间

标签 mysql datetime timezone utc

我有一个关于为不同时区的用户存储时间的问题。我的措辞可能有点绕,但请耐心等待。如果我只是将用户访问我的网络应用程序的 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/

相关文章:

mysql - 使用mysql上的一个公共(public)父列查询多列

mysql - CURRENT_TIMESTAMP 可以在 INSERT 或 UPDATE 命令中更改吗?

java - 将 IST/IST 时间转换为 UTC 时间

mysql - mysql中处理时间偏移的建议

php - 仅使用一次并从头开始

mysql - 当两列同时不为 false 时的 where 条件

python - 按时间间隔对元组排序? Python

python-tz 是我错了还是一个错误

PHP mysql 插入日期格式

VB.NET 仅获取日期中的年份