2015-12-25 56 views
0

我正在做一个应用程序,用户将其时区存储在SQL数据库中。针对每个用户调整时区和夏令时

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

指定时区,然后另一个表在那里我会满足用户的时区与它对应的关于UTC

间隔位移,但我怎么办,我想在与用户的用户表中有一栏一个脚本会自动更改这个关闭设置的地方夏令时?有些时候甚至有时候会有夏令时,有些时候没有夏令时。

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

我的appoach是否显示错误?

谢谢

+0

您应该向我们展示您迄今为止所做的工作,而不只是询问要做什么。在这里,我们帮助人们修正错误。 – Phiter

+0

我认为本手册涵盖了这一个 – Strawberry

+0

@Phiter,我迄今为止所做的是在我的用户表中添加一个varchar列,我将time_zone存储为一个字符串。然后一个不同的表格,其中每个时区都会有我需要添加或减去UTC的数量。如果由于夏令时造成时间变化,我该如何更新这张桌子 – user3808307

回答

0

你在重新发明轮子,在这里。

MySQL服务器具有内置的时区处理功能,包括能够“知道”系统时区表的何时何地白天时间(或不了解)。

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

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

当时间chages由于夏令

你不是我如何更新此表。如果您为用户选择了正确的时区,则自动处理夏令时转换。

例如,将冬令时和夏令时从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) 
+1

哦,非常感谢你:) !!!!!!!!!!!!!!!!!!!!!!!!!!!! ! – user3808307