2013-02-20 123 views
33

我正在運行一個來自世界各地的人訪問的世界目標網站。該數據庫包含國際日期行西格式的時間。我正在使用JavaScript使用用戶時區,並將數據庫中的時間轉換爲用戶的時間,然後在頁面上顯示。我想問一下,國際日期線西是世界級網站的正確格式?或者設置爲UTC或GMT會更好? UTC和GMT以及International Date Line West有什麼區別?這三個一樣嗎?最後,我應該在什麼時候將我的服務器設置爲使用用戶時區偏移進行轉換?GMT是否和UTC相同?

+2

從我的理解,UTC是格林威治標準時間,但沒有夏令時。不過,我很久以前就知道要遠離凌亂的日期時間問題。 – Servy 2013-02-20 17:23:48

+1

簡短回答是的。長回答沒有。格林威治標準時間從來沒有「夏令時」,那麼它被稱爲「BST」或其他名稱,所以這不是問題。最主要的是格林尼治標準時間和UTC可以相差不超過500毫秒。 – 2013-02-20 17:23:56

+0

@Servy - 在英國夏令時開始時,我們將時區移至BST(GMT + 1)。 – Quentin 2013-02-20 17:24:57

回答

19

如果您對天文觀測(例如GPS等衛星)感興趣,或者您想引用技術標準(ITU-R TF.460-6),那麼您可能會關心我們使用UTC和格林尼治標準時間不再有精確的定義。否則,您可能會認爲GMT與UTC相同,並且也認爲UT和UT1與UTC相同 - 技術上它們不是。另外,如果您正在跟蹤計算機犯罪分子或其他分佈式活動,那麼您需要確定在某些其他事件之前,各個站點的某些事件是否可能發生。爲此,您需要學習和使用網絡時間協議(NTP)。這對你對時間的理解要比UTC,UT1和UT之間的微小差異更大。

「International Date Line West」(國際日期行西)只是時區的友好名稱,其時間定義爲比UTC小12小時(即UTC-12)。

+1

它怎麼是一個友好的名字?我預計UTC + 12(例如:蘇瓦) – Jasen 2017-09-21 03:30:00

+0

它不回答這個問題。它是否相同? – 2017-10-06 15:45:16

+0

哎呀,我以不明確的方式使用了代詞「which」和「they」。我正在考慮所有的「格林尼治標準時間」(通過格林威治子午線的平均太陽時間),UTC,UT1和「UT」(通過任何其他定義,如UT0)的定義。雖然所有這些都彼此相近,但大多數時候它們的確切值都是不同的。 – minopret 2017-10-18 08:09:27

28

UTC實際上是GMT的新名稱。它有很小的差異,但是沒有一個會在這種情況下影響你。

塞維的評論是完全錯誤的說格林尼治標準時間包括夏時制。這是一個叫做BST的不同時區,英國在夏季從格林尼治標準時間開始移動。

+2

UTC使用閏秒來補償地球和太陽運動的不規則性,這意味着有時UTC的一分鐘可能有59或61秒。然而,由於它基於經過格林威治天文臺的零度經度,它恰好通常與GMT相匹配。請注意,UTC沒有夏令時。 – cernunnos 2013-02-20 17:29:46

+1

國際日期行呢?你能告訴我那是什麼嗎? – 2013-02-20 17:30:54

+0

這是一個很容易找到谷歌:) http://en.wikipedia.org/wiki/International_Date_Line – cernunnos 2013-02-20 17:34:07

1

通常,當您必須向不同時區的人員呈現日期或時間時,您應該做的就是在數據庫中保存UTC的所有時間信息並將其轉換爲顯示圖層上的用戶時區(當您將信息呈現給您的用戶)

但是你會發現幾個挑戰: - 你的JavaScript中得到的時區可能不可信賴 - 通過IP查找用戶的位置,然後讓該時區也不可信

在我看來,一個好方法是使用「最佳猜測」來查找默認時區(javascript時區應該足夠了),並讓用戶能夠主動配置他的時區。

在某些谷歌應用程序中,他們的方法是在開始之前提示用戶輸入他的時區,這應該只在您可以保證每次用戶訪問您的網站時不必重複此操作(通過用戶帳戶或餅乾)

+0

但是在這種情況下,我們必須爲註冊的未註冊和數據庫條目設置cookie。但就我的經驗而言,有些人甚至不知道時區是什麼? ...那麼他們呢?所以我們要照顧所有這些問題 – 2013-02-20 17:50:08

+0

你錯過了。所有日期和時間信息在數據庫中保存爲UTC。當用戶訪問您的網站時,您將該日期時間信息轉換爲用戶的時區。這個想法是爲了保證他不必知道很多關於時區的信息,所有提交給他的日期和時間都在他的時區。 – cernunnos 2013-02-20 17:57:56

+0

我不這麼認爲。因爲我的數據庫不能節省UTC時間。它節省了我當地的時間。那就是印度時間。 – 2013-02-20 18:34:29