jQuery函数将日期与当前日期进行比较

我通过在单独的文本框中输入日期,从下拉列表中选择年份并在文本框中输入年份来输入出生日期。 现在我想检查输入的日期不能大于jquery中的当前日期。 请帮忙怎么样?

var CurrentMonth = date.getDate() + '/' + date.getMonth() + '/' + date.getFullYear(); var SelectedDate = $('[id$=spDate]').val() + '/' + $('[id$=drpMonth]').val() + '/' + $('[id$=txtYear]').val(); if (CurrentDate > SelectedDate) { return false; } 

如果输入值是整数,则可以使用它们构造Date实例:

 var CurrentDate = new Date(); var SelectedDate = new Date( $('[id$=txtYear]').val(), $('[id$=drpMonth]').val(), $('[id$=spDate]').val() ); //As quite rightly mentioned, January = 0, so if your inputs have the literal number for each month (1 for January) replace the line above with the following, to take a month off: //var SelectedDate = new Date($('[id$=txtYear]').val(), $('[id$=drpMonth]').val()-1, $('[id$=spDate]').val()); if(CurrentDate > SelectedDate){ //CurrentDate is more than SelectedDate } else{ //SelectedDate is more than CurrentDate } 

比较Date对象很简单,只需使用标准的关系运算符即可。 当传递一个Object它们隐式调用对象的.valueOf()函数,它将以毫秒为单位返回适合比较的时间。

困难的部分是首先构建一个有效的Date对象。

为了可靠性,我强烈建议使用此版本的Date构造函数,而不是传递字符串:

 new Date(year, month, day [, hour, minute, second, millisecond]); 

这确保了本地日期格式无关紧要。 传递字符串会产生不同的结果,具体取决于用户区域设置中的默认日期格式是mm/dd/yyyy还是dd/mm/yyyy

不要忘记,年份必须是一个完整的数字年份,并且在这个版本中,1月份由0表示,而不是1:

 var SelectedDate = new Date( $('[id$=txtYear]').val(), $('[id$=drpMonth]').val() - 1, $('[id$=spDate]').val()); if (CurrentDate > SelectedDate) { ... } 
  function compareDate() { var dateEntered = document.getElementById("txtDateEntered").value; var date = dateEntered.substring(0, 2); var month = dateEntered.substring(3, 5); var year = dateEntered.substring(6, 10); var dateToCompare = new Date(year, month - 1, date); var currentDate = new Date(); if (dateToCompare > currentDate) { alert("Date Entered is greater than Current Date "); } else { alert("Date Entered is lesser than Current Date"); } } 

检查这是否有帮助:

 var TodayDate = new Date(); var endDate= new Date(Date.parse($("#EndDate").val())); if (endDate> TodayDate) { // throw error here.. } 

https://stackoverflow.com/a/40039798/885627

试试这个function:

 function isFutureDate(dateText) { var arrDate = dateText.split("/"); var today = new Date(); useDate = new Date(arrDate[2], arrDate[1] - 1, arrDate[0]); if (useDate > today) { return true; } else return false; }