我如何在Javascript中做date比较?

可能重复:
比较2date和JavaScript

我想在JavaScript中比较两个date。 我一直在做一些研究,但我能find的是如何返回当前的date。 我想比较两个单独的date,与今天无关。 我怎么做。

var startDate = Date(document.form1.Textbox2); 
 if (date1.getTime() > date2.getTime()) { alert("The first date is after the second date!"); } 

引用Date对象

 new Date('1945/05/09').valueOf() < new Date('2011/05/09').valueOf() 

可以使用相同的比较运算符来比较JavaScript的date,其余数据types使用:>,<,<=,> =,==,!=,===,!==。

如果你有两个dateA和B,那么A <B如果A比B更进一步。

但是这听起来像是把一个string变成一个date。 您只需将该string作为新date的parameter passing即可:

 var someDate = new Date("12/03/2008"); 

或者,如果你想要的string是一个表单字段的值,它可能是这样的:

 var someDate = new Date(document.form1.Textbox2.value); 

如果该string不是JavaScript识别为date的东西,那么您仍然会得到一个Date对象,但它将是“无效的”。 任何与其他date的比较将返回false。 转换为string时,将变为“无效的date”。 它的getTime()函数将返回NaN,并且在该date自己调用isNaN()将返回true; 这是检查string是否有效的简单方法。

您可以使用Date对象上的getTime()方法获取相对于1970年1月1日的时间戳(以毫秒为单位)。如果将两个date转换为整数时间戳,则可以通过减去它们来比较差异。 结果将以毫秒为单位,因此您只需将秒数分为1000,然后再以60分钟为单位等等。

我宁愿使用datevalueOf方法,而不是===或!==

看起来像===比较内部对象的引用和没有关于date。

您可以尝试使用此代码检查date格式为MM / DD / YYYY的date中哪个date值最高:

 function d_check() { var dl_sdt=document.getElementIdBy("date_input_Id1").value; //date one var dl_endt=document.getElementIdBy("date_input_Id2").value; //date two if((dl_sdt.substr(6,4)) > (dl_endt.substr(6,4))) { alert("first date is greater"); return false; } else if((((dl_sdt.substr(0,2)) > (dl_endt. substr(0,2)))&&(frdt(dl_sdt.substr(3,2)) > (dl_endt.substr(3,2))))|| (((dl_sdt.substr(0,2)) > (dl_endt.substr(0,2)))&& ((dl_sdt.substr(3,2)) < (dl_endt.substr(3,2))))|| (((dl_sdt.substr(0,2)) == (dl_endt.substr(0,2)))&&((dl_sdt.substr(3,2)) > (dl_endt.substr(3,2))))) { alert("first date is greater"); return false; } alert("second date is digher"); return true; } 

/ *为检查此….创build一个窗体,并给id两个dateinput。date格式应该是mm / dd / yyyy或mm-dd-yyyy或mm:dd:yyyy或mm.dd.yyyy像这样。 * /

 function fn_DateCompare(DateA, DateB) { // this function is good for dates > 01/01/1970 var a = new Date(DateA); var b = new Date(DateB); var msDateA = Date.UTC(a.getFullYear(), a.getMonth()+1, a.getDate()); var msDateB = Date.UTC(b.getFullYear(), b.getMonth()+1, b.getDate()); if (parseFloat(msDateA) < parseFloat(msDateB)) return -1; // lt else if (parseFloat(msDateA) == parseFloat(msDateB)) return 0; // eq else if (parseFloat(msDateA) > parseFloat(msDateB)) return 1; // gt else return null; // error } 
  function validateform() { if (trimAll(document.getElementById("<%=txtFromDate.ClientID %>").value) != "") { if (!isDate(trimAll(document.getElementById("<%=txtFromDate.ClientID %>").value))) msg = msg + "<li>Please enter valid From Date in mm/dd/yyyy format\n"; else { var toDate = new Date(); var txtdate = document.getElementById("<%=txtFromDate.ClientID %>").value; var d1 = new Date(txtdate) if (Date.parse(txtdate) > Date.parse(toDate)) { msg = msg + "<li>From date must be less than or equal to today's date\n"; } } } if (trimAll(document.getElementById("<%=txtToDate.ClientID %>").value) != "") { if (!isDate(trimAll(document.getElementById("<%=txtToDate.ClientID %>").value))) msg = msg + "<li>Please enter valid To Date in mm/dd/yyyy format\n"; else { var toDate = new Date(); var txtdate = document.getElementById("<%=txtToDate.ClientID %>").value; var d1 = new Date(txtdate) if (Date.parse(txtdate) > Date.parse(toDate)) { msg = msg + "<li>To date must be less than or equal to today's date\n"; } } } 

你可以尝试添加下面的脚本代码来实现这个:

 if(CompareDates(smallDate,largeDate,'-') == 0) { alert('Selected date must be current date or previous date!'); return false; } function CompareDates(smallDate,largeDate,separator) { var smallDateArr = Array(); var largeDateArr = Array(); smallDateArr = smallDate.split(separator); largeDateArr = largeDate.split(separator); var smallDt = smallDateArr[0]; var smallMt = smallDateArr[1]; var smallYr = smallDateArr[2]; var largeDt = largeDateArr[0]; var largeMt = largeDateArr[1]; var largeYr = largeDateArr[2]; if(smallYr>largeYr) return 0; else if(smallYr<=largeYr && smallMt>largeMt) return 0; else if(smallYr<=largeYr && smallMt==largeMt && smallDt>largeDt) return 0; else return 1; }