首页 > 解决方案 > 如何在Jquery中比较月份和年份的两个日期

问题描述

我的视图中有以下日期选择器字段。我想验证 fromDate 必须小于今天。

     @(Html.Kendo().DatePickerFor(m => m.FromDate)
           .Format("{0:MM/yyyy}")
           .Depth(CalendarView.Year)
           .Start(CalendarView.Year)
          )

从日期开始

      @(Html.Kendo().DatePickerFor(m => m.ToDate)
           .Format("{0:MM/yyyy}")
           .Depth(CalendarView.Year)
           .Start(CalendarView.Year)
          )     

我使用了这个 Jquery,但它只检查月份部分。如何比较月份和年份

 function validateDateRange() {
        var messageText = '';
        var fromDate = $('#FromDate').val();
        var toDate = $('#ToDate').val();

        if ((fromDate > toDate) && (toDate != null || toDate.length != 0) && (fromDate != null || fromDate.length != 0)) {
            messageText = 'start Date Must be greater than or equal to the end date.';
        }        
       
        return messageText;
    }

标签: javascriptjquery

解决方案


您可以将日期值更改为时间戳

function validateDateRange() {
    var messageText = '';
    var fromText = $('#FromDate').val();
    var toText = $('#ToDate').val();
    // since from/to texts has different date format we need to change it
    // to a format new Date() would accept
    var fromSplit = fromText.split("/");
    var toSplit = toText.split("/");
    // just put 1 day if it's not necessary
    fromText = fromSplit[1] + "-" + fromSplit[0] + "-" + "1";
    toText = toSplit[1] + "-" + toSplit[0] + "-" + "1";
    // multiplying date by 1 will return a timestamp
    var fromDate = new Date(fromText) * 1; 
    var toDate = new Date(toText) * 1;

    /* Shouldn't be start date be lesser than end date? but whatever */
    if (fromDate < toDate) {
        messageText = 'start Date Must be greater than or equal to the end date.';
    }        
   
    return messageText;
}

推荐阅读