2015-04-21 26 views
0

我有一個表單,用戶必須輸入一個開始日期和一個結束日期。在那之後,我一定要計算這個日期的結果對UI狀態:在javascript中處理日期的更好方法

  • 如果日期是在過去,狀態爲「已完成」
  • 如果日期是在未來,狀態「要做」
  • 如果今天是bewteen兩個日期,狀態是「進行中」

我怎麼能計算該easely?我有這種格式的日期:2015年4月21日。

你是否建議我通過更改格式比較日期(04/21/2015 => 20150421)並進行比較?或者使用JS的日期?還是其他什麼?

在此先感謝

+0

我想我都可以做 – clement

+1

嘗試所謂的東西 - moment.js –

+1

@SarveshKumarSingh矯枉過正 - 再加上它沒有比較,除非你有矩範圍。我只是比較Unix時間戳 –

回答

1

得到兩個日期的對象是這樣的:

// parse a date in mm/dd/yyyy format 
function parseDate(input) { 
    var parts = input.split('/'); 
    // new Date(year, month [, day [, hours[, minutes[, seconds[, ms]]]]]) 
    return new Date(parts[2], parts[0]-1, parts[1]); // Note: months are 0-based 
} 

然後比較使用通常的運營商< > ==

+0

我真的認爲我會這樣做,謝謝 – clement

0

您可以創建輸入日期的日期對象,併爲當前日期的另一個日期對象,然後簡單地比較他們。

檢查dateObject以提供正確的日期字符串格式:

var inpDate = $('input').val(); 
var d = new Date(inpDate); 
var today = new Date(); 

if (inpDate > today) { 
    return "TO BE DONE"; 
} else .... 
0

有你嘗試http://momentjs.com/。真正簡單易用,轉換和格式化可以爲您節省添加更多JavaScript代碼的時間,但通過添加庫來抵消它。

0
function getStatusByDate(startDate, endDate) { 
    var currentTime = new Date().getTime(); 
    var startTime = new Date(startDate).getTime(); 
    var endTime = new Date(endDate).getTime(); 
    console.log(startTime, endTime); 
    if (startTime < endTime && endTime < currentTime) { 
     return ('DONE'); 
    } else if (startTime < endTime && endTime > currentTime && startTime < currentTime) { 
     return ('IN PROGRESS'); 
    } else if (startTime < endTime && startTime > currentTime) { 
     return ('TO BE DONE'); 
    } else { 
     return ('INVALID INPUT'); 
    } 
} 
+0

謝謝@Dayanand – clement