2012-11-22 39 views
0

這裏我有一個函數,用於計算兩個時間變量startend之間的差異,並顯示輸出爲'過去','當前'或'未來'。Javascript時間比較:達到此目的的最佳方法是什麼?

我能計算出「當前」和「未來」的值,但「過去」沒有運氣。這裏是jsFiddle和任何幫助將是巨大的。

在一個側面說明,我不喜歡插件少的方式來實現這一目標。

//My Start time and End time 
var start = "Mon Nov 22 2012 08:45:00 GMT+0800 (Malay Peninsula Standard Time)"; 
var end = "Mon Nov 22 2012 10:15:00 GMT+0800 (Malay Peninsula Standard Time)"; 

//Calling to test function 
test(start, end); 

//Function to calculate 
function test(startTime, endTime) { 
    startTime= new Date(startTime); 
    endTime= new Date(endTime); 
    var currentTime = new Date(); 
    var difference = currentTime - startTime; 

    if (difference > 0 && currentTime > startTime) { 
     alert ("Past!"); 
    } 

    if(startTime < currentTime && currentTime < endTime){ 
     alert("Current!"); 
    } 

    if(difference < -1){ 
     alert("Future!"); 
    } 
}​ 

鏈接jsFiddle

+0

所以......過去是當'啓動<結束 trumank

+0

這沒什麼意義。 –

+0

我沒有看到stinkin'jQuery,我們已經被淹沒了! – RobG

回答

1

一聲嘆息!我只需要一些睡眠。這是工作和這裏的更新jsFiddle:http://jsfiddle.net/9jk6a/9/

謝謝大家誰幫助。

//My Start time and End time 
var start = "Mon Nov 23 2012 08:45:00 GMT+0800 (Malay Peninsula Standard Time)"; 
var end = "Mon Nov 23 2012 10:15:00 GMT+0800 (Malay Peninsula Standard Time)"; 

//Calling to test function 
test(start, end); 

//Function to calculate 
function test(startTime, endTime) { 
    startTime= new Date(startTime); 
    endTime= new Date(endTime); 
    var currentTime = new Date(); 
    var difference = currentTime - startTime; 

    if (startTime < endTime && endTime < currentTime) { 
     alert ("Past!"); 
    } 

    if(startTime < currentTime && currentTime < endTime){ 
     alert("Current!"); 
    } 

    if(currentTime < startTime && startTime < endTime){ 
     alert("Future!"); 
    } 
}​ 
0

你應該比較someDate.getTime()值,因爲它會給你代表UNIX整數時代(自1970年1月1日以來,時間已經過去了),這將是可比的,可以減少的。

我編輯的小提琴:http://jsfiddle.net/9jk6a/12/

乾杯

+0

不需要'getTime',使用日期對象進行算術運算可以有效地調用它(順便說一下,時間值是UTC,而不是它在這裏有任何區別)。 – RobG

0

這是多餘的:

var difference = currentTime - startTime; 

if (difference > 0 && currentTime > startTime) 

鑑於分配,difference > 0currentTime > startTime正在測試完全相同的條件。如果一個是真的,另一個也是真的,所以沒有理由測試兩者。

真的,所有你需要的是這樣的:

if (startTime > endTime) { 
    throw "Invalid range: end precedes start"; 
} 

if (startTime < currentTime) { 
    if (endTime < currentTime) { 
     alert("Past"); 
    } else { 
     alert("Current"); 
    } 
} else { 
    alert ("Future"); 
} 
相關問題