我有一個表單,用戶必須輸入一個開始日期和一個結束日期。在那之後,我一定要計算這個日期的結果對UI狀態:在javascript中處理日期的更好方法
- 如果日期是在過去,狀態爲「已完成」
- 如果日期是在未來,狀態「要做」
- 如果今天是bewteen兩個日期,狀態是「進行中」
我怎麼能計算該easely?我有這種格式的日期:2015年4月21日。
你是否建議我通過更改格式比較日期(04/21/2015 => 20150421)並進行比較?或者使用JS的日期?還是其他什麼?
在此先感謝
我有一個表單,用戶必須輸入一個開始日期和一個結束日期。在那之後,我一定要計算這個日期的結果對UI狀態:在javascript中處理日期的更好方法
我怎麼能計算該easely?我有這種格式的日期:2015年4月21日。
你是否建議我通過更改格式比較日期(04/21/2015 => 20150421)並進行比較?或者使用JS的日期?還是其他什麼?
在此先感謝
得到兩個日期的對象是這樣的:
// 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
}
然後比較使用通常的運營商< > ==
我真的認爲我會這樣做,謝謝 – clement
您可以創建輸入日期的日期對象,併爲當前日期的另一個日期對象,然後簡單地比較他們。
檢查dateObject以提供正確的日期字符串格式:
var inpDate = $('input').val();
var d = new Date(inpDate);
var today = new Date();
if (inpDate > today) {
return "TO BE DONE";
} else ....
有你嘗試http://momentjs.com/。真正簡單易用,轉換和格式化可以爲您節省添加更多JavaScript代碼的時間,但通過添加庫來抵消它。
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');
}
}
謝謝@Dayanand – clement
我想我都可以做 – clement
嘗試所謂的東西 - moment.js –
@SarveshKumarSingh矯枉過正 - 再加上它沒有比較,除非你有矩範圍。我只是比較Unix時間戳 –