2015-12-25 50 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