我正在开发一个应用程序,用户将他们的时区存储在 SQL 数据库中。
当他们的位置实行夏令时时,我如何跟踪?
我正在考虑在用户表中有一列包含用户指定的时区,然后在另一个表中将用户时区与其相对于 UTC 的相应间隔位移进行匹配
但是我该如何编写一个脚本来自动更改实行夏令时的地方的偏移设置呢?甚至有些地方有时有夏令时,有时则没有。
我应该使用 API 吗?如果有,是哪一个?
我的方法明显错误吗?
谢谢
最佳答案
您正在重新发明轮子。
MySQL 服务器具有内置时区处理功能,包括从系统时区表“知道”何时何地是夏令时(或不是夏令时)的能力。
http://dev.mysql.com/doc/refman/5.6/en/time-zone-support.html
CONVERT_TZ()
function嵌入在查询中,会将日期时间从当前时区(您指定的)转换为另一个时区(用户的时区)。
How do i update this table when time chages due to daylight savings
你不知道。如果您为用户选择了正确的时区,则会自动处理夏令时转换。
例如,将冬令时和夏令时从 UTC 转换为美洲/纽约时区(东部标准/东部夏令时)。请注意 5 小时(冬季)与 4 小时(夏季)的偏移量:
mysql> select convert_tz('2015-01-01 00:00:00','UTC','America/New_York');
+------------------------------------------------------------+
| convert_tz('2015-01-01 00:00:00','UTC','America/New_York') |
+------------------------------------------------------------+
| 2014-12-31 19:00:00 |
+------------------------------------------------------------+
1 row in set (0.01 sec)
mysql> select convert_tz('2015-06-01 00:00:00','UTC','America/New_York');
+------------------------------------------------------------+
| convert_tz('2015-06-01 00:00:00','UTC','America/New_York') |
+------------------------------------------------------------+
| 2015-05-31 20:00:00 |
+------------------------------------------------------------+
1 row in set (0.00 sec)
关于mysql - 根据每个用户调整时区和夏令时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34467018/