2017-04-05 62 views
-5

嗨我有一個簡單的if語句比較日期,但它沒有運行,我已經嘗試調試它,但不起作用。時間如果語句不工作

dateFormat = "01/05/2099" 
dateMissing = "25/11/2016" 

if(dateFormat > dateMissing){ 
    dateFormat = dateMissing; 
} 
+0

日期或字符串? –

+0

嘗試'dateFormat = new Date(「01/05/2099」)' –

+0

@AlexMcMillan:否,'Date'未定義爲理解該格式。 –

回答

1

您在比較字符串。比較他們的角色,從左到右逐個比較,直到找到差異,然後使用該差異作爲結果。由於"2">"0",該字符串大於另一個。

您需要解析日期並比較結果。 不要只是使用new Date(dateFormat)或類似的,那些字符串不是由JavaScript的Date對象處理的格式。自己解析(直接或通過庫)。例如。

var dateFormat = "01/05/2099"; 
 
var dateMissing = "25/11/2016"; 
 
var parts, dt1, dt2; 
 
var parts = dateFormat.split("/"); 
 
var dt1 = new Date(+parts[2], +parts[1] - 1, +parts[0]); 
 
parts = dateMissing.split("/"); 
 
var dt2 = new Date(+parts[2], +parts[1] - 1, +parts[0]); 
 
if (dt1 > dt2) { 
 
    dateFormat = dateMissing; 
 
} 
 
console.log("dateFormat:", dateFormat); 
 
console.log("dt1", dt1.toString()); 
 
console.log("dt2", dt2.toString());

0

你不能簡單地比較包含日期字符串。首先,將它們轉換爲可接受的格式(毫秒)。

var dateFormat = new Date("05/01/2099").getTime(); 
var dateMissing = new Date("11/25/2016").getTime(); 

然後你可以做你的日期比較。

+1

「*您不能簡單地比較包含日期的字符串*。如果它們格式正確,使用* localeCompare *,例如2099 -01-05'.localeCompare('2016-11-25')'。;-) – RobG