2015-11-09 20 views
0

該代碼比較2個時間 - 當前時間和截止時間。比較不知道機器的時區的時間

// Get current date/time 
var now = new Date(); 

// Set up deadline date/time 
var deadline = new Date(); //deadline is 1830hrs; 
deadline.setHours(18); 
deadline.setMinutes(30); 

// Check if the current time is after the deadline 
if(now > deadline) { 
    console.log('after deadline'); 
} 
else { 
    console.log('before deadline'); 
} 

它的工作我的本地機器nowdeadline在同一個時區上。如果代碼在now時區可與要比較的deadline時區不同的服務器上運行,該怎麼辦?當now可以是任何時區並且deadline位於亞洲/香港時區時如何處理這種情況?

編輯:有沒有什麼方法可以在創建時指定時區deadline?我認爲這是一個可能的解決方案。

+0

看一下moment.js可能會有幫助 –

回答

1

當你在JS中創建這兩個時間的客戶端不會有這種情況。因爲這兩個時間都會從同一個客戶端讀取時間。

但是,如果任何時候任何時候來自服務器(以過程字符串的形式)位於另一個時區,並且客戶端在另一個時區,則有可能發生此情況。

現在,你的做法將是這兩個日期轉換爲特定的時間段(任何)。 然後進行比較。

您可以使用This圖書館時區轉換成JS。
並從This Thread獲取幫助。

1

期限,現在總是在同一個時區,因爲你new Date()那裏。

+0

等一下。有些東西聽起來不對。假設我設定的「截止日期」是在亞洲時區。但是現在是在美國時區。時間結果將不被期望。 – user781486

+0

鑑於您知道兩個日期的時區,您可以使用'moment-timezone'進行比較。否則,這是不可能比較的。 –

0

您錯過了客戶端在什麼時區的信息。這是部分只是比較它與所有時區的時間形式解決。

在我的例子中,我將使用moment.js,因爲它是一個很好的函數庫,它具有許多僅用於時區的功能。

您可以使用this code查找匹配的時區,但有時他們對於DST有不同的規則,因此他們會在一年中轉移。

但是,如果這很好,現在可以使用moment.js來指定截止日期的時區並計算您離開的時間。