2017-04-05 63 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