2015-07-01 52 views
0

使用dateObj.toISOString().slice(0, 19).replace('T', ' ')我們可以在javascript中將日期對象轉換爲mysql日期時間格式。但時區始終被視爲客戶端(瀏覽器)的時區。以mysql格式獲取不同時區的UTC時間

我想將不同時區(不是瀏覽器的時區)的日期和時間轉換爲UTC時間,然後轉換爲mysql時間格式。

例如: 愛麗絲正在紐約從悉尼安排會議。愛麗絲進入紐約時間作爲輸入。即使認爲瀏覽器的位置是悉尼,javascript代碼也必須假定瀏覽器的位置在紐約,並將日期時間轉換爲UTC,然後轉換爲mysql格式。

我可以得到當前紐約時間,dateObj.toLocaleString('en-US', { timeZone: 'America/New_York'})。但不知道接下來要做什麼。似乎是要考慮時差的事情...

任何人都知道如何做到這一點?

+0

檢查http://momentjs.com/ – Fetz

回答

0

因此,您希望始終將日期存儲在事件發生位置的utc表示中。

拯救: 你知道Alice有她的時區設置爲一個特定的值,因此,你需要從Alice的時區爲UTC轉換。如果Alice在會議時間晚上11:59:59輸入,則存儲的時間將是GMT發生時的時間,根據是否正在觀察DST,這將是+4/5小時。這聽起來像使用您的解決方案,你會需要像dateTimeUTC=FromSpecificTimeZoneToUTC(specificTimeZoneDateTime,'Eastern Standard Time')

dateObj.toLocaleString('en-US', { timeZone: '<TimeZone name for GMT>'}) 

函數來查看: 愛麗絲現在已經在這裏調整時區信息將在太平洋標準時間,也就是GMT-8。由於我們知道事件發生在格林尼治標準時間上午3:59:59,因此我們需要一個函數來從UTC轉換回特定時間PST,這將在Alices的更改配置中產生7:59:59 PM。 dateTimeSpecific=FromUTCToSpecificTimeZone(uTCTimeZoneDateTime,'Pacific Standard Time')

在我的opionion中,你可能會更好地服務於處理這樣的服務器端的轉換,你可以控制tz信息。我認爲js可能太不一致,因爲時間信息基於客戶端計算機的區域設置,而不是操作的首選時區。另外,時區信息可能會更改。我不知道js如何處理這些變化。

相關問題