我遇到了一個似乎是使用JavaScript日期選擇器來顯示並允許用戶從可用日程表日期的房間預訂日曆中選擇日期的常見問題。在javascript顯示時區偏移
瀏覽器的時區轉換意味着這些日期總是偏離某個邊界,因此通常當向用戶顯示一個保留日期時,日期將落在「明天」給觀衆,當服務器(本地時區到存儲在數據庫中的資產或房間)顯示爲「今天」。
我希望用戶的瀏覽器忽略javascript日期轉換,並只使用數據庫傳入的實際日期時間。
然而,這甚至發生在一個非常簡單的例子是這樣的:
var date = '2013-02-05';
var newdate = new Date(date);
console.log(newdate); // Mon Feb 04 2013 16:00:00 GMT-0800 (PST)
看來,date
變量是由瀏覽器假設爲GMT,當我從它創建一個JavaScript日期對象,它將GMT時間轉換爲當地時間。
在這種情況下,最佳做法是在數據庫中使用GMT日期,並將網站的本地時間偏移量設置爲javascript中的變量,然後可用於偏移顯示給最終用戶的日期,並再次抵消從最終用戶接收的插入數據庫的日期?
這是令人困惑的,因爲存在很多潛在的缺陷 - PHP語言環境,mysql語言環境或瀏覽器的語言環境都可能影響到它,並搞砸最後的日期。任何建議,以確保一致的日期值讚賞!
我不得不爲這個自己實現一個解決方案,這並不好玩,但是我發現以下減少的麻煩:隨時隨地分別存儲UTC/GMT一切。嘗試將時區附加到您通過任何不知道UTC的任何日期。除非用戶可以在某種用戶設置頁面或註冊表單中明確設置時區,否則可以給用戶下拉選擇時區,而不是嘗試猜測,如果嘗試猜測,並將時區下拉菜單設置爲猜測區域。不是一個真正的答案,但我希望它有幫助。 – dennmat
有關於此的任何解決方案? –