我正在做一个应用程序,用户将时区存储在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)