如何在Javascript中检查一个日期是否小于或等于另一个日期

11

我在尝试判断一个日期是否小于或等于另一个日期,但是遇到了困难。

这是我的代码:

var bftStartDt = input1[0]; //This is a string with value "01-Jul-2007"
var bftEndDt = input1[4]; //This is a string with value "01-Jul-1942"

var strtDt = new Date(bftStartDt);
var endDt = new Date(bftEndDt);
var flag = 0; // false

if (endDt <= strtDt){
   flag = 1; // true
}

当它应该进入 if 语句时,它从未进入?我在这里漏掉了什么。

谢谢


你是否验证了你从字符串中实际构造的日期实例是有效的? - Pointy
不 - 我如何做到那个? - AJR
2
没关系 - 我刚注意到你的样本日期格式。JavaScript无法直接解析它。您可能需要了解Moment.js库。 - Pointy
1
这对我来说看起来很好 http://jsfiddle.net/haf5Ld2v/ - scniro
1
在我的电脑上,Chrome可以运行,但IE或FF不能。不要相信那个日期格式,使用标准格式之一。 - Scott Sauyet
显示剩余3条评论
2个回答

13
var strtDt  = new Date("2007-07-01");
var endDt  = new Date("1942-07-01");
var flag = 0; // false

if (endDt <= strtDt){
   flag = 1; // true
   alert("true");
}

它有效,请查看Plunker


@AmadeusDrZaius已经修改了它,现在在FF上可以工作了。 - CognitiveDesire
好的。那我就把我的评论都删掉... - Chris Middleton

0
问题在于01-Jul-2007不是Date对象支持的格式。尝试使用2007-01-07代替。这样你的程序就能按预期工作了。
var bftStartDt = "01-07-2007"; //This is a string with value "01-Jul-2007"
var bftEndDt = "01-07-1942"; //This is a string with value "01-Jul-1942"

var strtDt = new Date(bftStartDt);
var endDt = new Date(bftEndDt);
var flag = 0; // false

if (endDt <= strtDt){
   flag = 1; // true
}

if(flag === 1) {
  console.log("It worked.");
}

根据MDN,接受的格式包括:

表示RFC2822或ISO 8601日期的字符串(可以使用其他格式,但结果可能出乎意料)。

因此,您也可以使用格式Jul 01 2007。完整的格式列表在RFC 2822中。

如何处理由日期选择器获取的“DD MON,YYYY”格式? - Zoran777

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接