我正在做一个用户将时区存储在SQL数据库中的应用程序。
如果在他们的位置有夏令时,我如何跟踪?
我想在users表中有一个用户指定时区的列,然后是另一个表,我将匹配用户时区及其相应的UTC间隔位移 p>
但是,如何在有夏令时的地方自动更改此设置的脚本?甚至有时会有夏令时,有些年份则没有。
我应该使用API吗?如果是这样,哪一个?
我的指控是否完全错误?
谢谢
答案 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)