根据每个用户调整时区和夏令时



我正在做一个应用程序,用户将时区存储在SQL数据库中。

当他们所在的地方有夏令时时,我该如何跟踪?

我想在users表中有一列用户指定的时区,然后在另一个表中,我将用户时区与其对应的UTC 间隔位移相匹配

但是,我该如何编写一个脚本,在有夏令时的地方自动更改此偏移?甚至有些地方有时有夏令时,但有些年份没有。

我应该使用API吗?如果是,是哪一个?

我的说法完全错了吗?

感谢

您正在重新发明轮子。

MySQL Server具有内置的时区处理功能,包括从系统的时区表中"知道"何时何地是夏令时(或不知道)的能力。

http://dev.mysql.com/doc/refman/5.6/en/time-zone-support.html

嵌入查询中的CONVERT_TZ()函数将日期时间从当前时区(您指定的时区)转换为另一个时区(用户的时区)。

当时间因夏令时而改变时,我该如何更新此表

你没有。如果为用户选择了正确的时区,则会自动处理夏令时转换。

例如,将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)

最新更新