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

时间:2015-12-25 22:38:00

标签: mysql api

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

如果在他们的位置有夏令时,我如何跟踪?

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

但是,如何在有夏令时的地方自动更改此设置的脚本?甚至有时会有夏令时,有些年份则没有。

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

我的指控是否完全错误?

谢谢

1 个答案:

答案 0 :(得分:0)

你在这里重新发明轮子。

MySQL服务器具有内置的时区处理功能,包括能够“了解”系统时区表中白天(或不是)的日期和时间。

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

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

  

如果由于夏令时导致时间变化,我如何更新此表

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

例如,将冬令时和夏令时从UTC转换为America / New_York时区(东部标准/东部日光)。请注意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)