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

时间:2013-01-21 13:14:24

标签: javascript 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;
    } 

5 个答案:

答案 0 :(得分:9)

如果输入值是整数,则可以使用它们构造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
}

答案 1 :(得分:3)

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

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

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

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) { ... }

答案 2 :(得分:1)

  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");
}
}

答案 3 :(得分:1)

检查这是否有帮助:

var TodayDate = new Date();
var endDate= new Date(Date.parse($("#EndDate").val()));

if (endDate> TodayDate) {
    // throw error here..
}

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

答案 4 :(得分:0)

尝试此功能:

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;
        }