2010-07-06 24 views
3

您好,我在我的web應用程序中有一個典型的需求,我必須填寫一個包含所有系統時區的下拉框,並設置從客戶端瀏覽的選定時區。如何通過java腳本查找系統區域時區名稱

只有timezoneoffset的是不足以處理這種suituation,因爲有兩個原因 1.最新的操作系統具有相同的多於一個時區偏移 2.如果日光節約啓用或禁用(可檢測從Javascript)抵消將有所不同。

是在Java腳本中處理這個問題的方法嗎?

+1

我不相信有什麼辦法可以找出你想知道的。我也不明白爲什麼它很重要;無論如何,'getTimezoneOffset'報告的偏移量是非常重要的。爲了配置站點首選項,時區偏移爲來自選擇列表的默認選擇提供了一個很好的開始猜測,然後用戶可以直接提供信息。 – Pointy 2010-07-06 12:53:35

+0

此請求的主要原因記錄在用戶將從中央服務器獲取來自各個地區的報告。用戶在報告之前必須注意他們自己的時區,選擇正確的時區。如果用戶選擇了錯誤的報告,則報告將被歸一化到不同的時區。 – Dharma 2010-07-06 13:18:56

回答

0
+0

我閱讀了那篇文章,並試圖使用每個時區偏移量啓用或禁用DST。如果我們從操作系統中引用時區,則會有更多時區名稱具有相同的偏移量,例如(GMT + 2:00),我有9個條目,以確定其中一個是我的查詢。 – Dharma 2010-07-07 11:33:41

+0

這對報告沒有任何影響,因爲時區是地球上的一個區域,或多或少受到經線的限制,您有9個條目屬於同一經度線。重要的是夏令時(這就是爲什麼在文章中你只能找到2個條目(GMT +2:00)。(UTC + 02:00 - DST:True)安曼,雅典,布加勒斯特,伊斯坦布爾,貝魯特,開羅,赫爾辛基,基輔,里加,索非亞,塔林,維爾紐斯,耶路撒冷,明斯克,溫得和克。 (UTC + 02:00,DST:False)比勒陀利亞哈拉雷 – 2010-07-07 12:36:46

1

簡短回答: 使用此開源JavaScript項目:jsTimezoneDetect。它基於MK在這裏鏈接的代碼,這很好,但是不夠,因爲同一時區內的不同地區在不同時間開始夏令時。半球也是一個因素。

長答案: 一個例子是-07:00 UTC時區,它基本上有三個子時區。

  • 美國山地標準時間(無日光節約時間......這是亞利桑那州)
  • 美國山區標準時間(日光節約)
  • 墨西哥山區標準時間(日光節約)

假設你知道你的用戶的UTC抵消,你現在必須檢查你的時區是否使用夏時制。創建一個一月和一個六月的日期並檢查這兩個日期。如果UTC偏移量不同,則表示您處於夏令時的時區。假設您已確定您的用戶是夏令時的-07:00,即美國山地時間(美國/丹佛)或墨西哥山區時間(美國/奇瓦瓦州)。如何區分他們?那麼,他們開始夏令時的日期有所不同。

美國夏令時開始於2011年3月13日開始,墨西哥4月4日開始。因此,從丹佛開始,檢查3月13日是夏季,不是嗎?好的,檢查4月4日是夏令時。是?答對了。

相關問題