Javascript比较两个日期,从字符串开始<;=结束

Javascript比较两个日期,从字符串开始<;=结束,javascript,validation,date,Javascript,Validation,Date,我得到两个类似(巴西格式)的字符串:“DD/MM/YYYY”,我需要比较这两个字符串。因为第一个字段是开始,最后一个字段是结束 我的验证是开始不要使用Date.new。使用新日期()。由于日期字符串的格式,我建议分别获取每个字段并将其传递给构造函数: var startYear = parseInt(document.getElementById('startYear'), 10); var startMonth = parseInt(document.getElementById('start

我得到两个类似(巴西格式)的字符串:“DD/MM/YYYY”,我需要比较这两个字符串。因为第一个字段是开始,最后一个字段是结束


我的验证是开始不要使用
Date.new
。使用
新日期()
。由于日期字符串的格式,我建议分别获取每个字段并将其传递给构造函数:

var startYear = parseInt(document.getElementById('startYear'), 10);
var startMonth = parseInt(document.getElementById('startMonth'), 10) - 1; // as per Residuum's comment
var startDay = parseInt(document.getElementById('startDay'), 10);
var start = new Date(startYear, startMonth, startDay);
等等。如果你收到一个日期字符串,那么你可以使用模糊棒棒糖的方法从字符串中获取每个字段。但是,我不确定Date构造函数是否会为各个字段接受未解析的字符串

一旦有了要比较的两个日期,只需比较它们自历元起的毫秒值:

function isValid(start, end) {
    return start.getTime() < end.getTime();
}
函数有效(开始、结束){
返回start.getTime()
如果您知道日期的格式始终与dd/mm/yyyy相同,那么您可以这样做

today = "23/02/1001";
dateComponents = today.split("/");
date = new Date(dateComponents[2], dateComponents[1] - 1, dateComponents[0]);

但更好的解决方案是查看此页面,它是日期处理的一个很好的替代方案。

有一个很好的日期处理库,名为,它有一个
parseExact(dateStr,format)
方法。

Quick'n dirty:

function is_valid (start , end) {
     return start.split('/').reverse().join('') <= end.split('/').reverse().join('') ;
}
函数有效(开始、结束){

返回start.split('/').reverse().join('')以下是Javascript中日期对象的所有可用构造函数:

dateobject = new Date(); // returns date of current time stamp
                         // on the browser
dateobject = new Date("Month Day, Year Hours:Minutes:Seconds");
dateobject = new Date(Year, Month, Day);
dateobject = new Date(Year, Month, Day, Hours, Minutes, Seconds);
dateobject = new Date(Milliseconds);
选择您尝试使用的一个,但我会选择新日期(年、月、日)

编辑:
注意:
Month
在Javascript中是零,因此2010年1月1日将是
新的日期(2010,0,1)
,2011年12月31日是
新的日期(2010,11,31)

JS时代世界的新“热点”:
同样适用于此用例

月份在Javascript中是零基的,因此将其设为startMonth=parseInt(document.getElementById('startMonth'),10)-1;好的,特别感谢对月份-1的观察。否则,所有12月份的日期都将失败=)月份在Javascript中是零基的,所以将其设为date=new date(dateComponents[2],dateComponents[1]-1,日期组件[0]);日期格式字符串dd/mm/yyyy通常不采用零填充。如果日期组件不总是零填充,则这不起作用。例如“9/1/2010”和“10/1/2010”。如果没有填充,则它将不起作用…对我来说,指示dd而不是d,而mm而不是m意味着2位数字,但我猜不一定如此。mon这是一个非常奇怪的JS怪癖,因为还有其他一些,但如果你喜欢JS,它可以是一个非常好的语言。