0

When I try validating these following dates,only day is getting validated.Month and year are not getting validated. Can somebody suggest the code for that? Thanks in advance!! The date format that I am using is dd/mm/yyyy!! I am using IE7(No other option here).

function DateCheck() {

    var dates;
    var logDate = document.getElementById("f4").value;
    var actionDate=document.getElementById("f5").value;
    var closureDate = document.getElementById("f6").value;


    var lDate=new Date(logDate);
    var cDate= new Date(closureDate);
    var aDate=new Date(actionDate);

    if(cDate < lDate)dates=1;
    if(aDate < lDate)dates=2;
    if(aDate > cDate)dates=3;
    if(currentDate < cDate)dates=4;


    switch(dates){
    case 1:  alert("Please ensure that the Closure Date is greater than the Log Date");
         return false;

         break;
    case 2: alert("Please ensure that the Action Date is greater than the Log Date");
             return false;

             break;
             case 3:alert("Please ensure that the Closure Date is greater than the Action Date");
        return false;
    break;  
             case 4:alert("Closure Date should always be less than or equal to Today's Date");
             return false;
             break; 
}
}

4

4 回答 4

0

不幸的是,您无法像这样比较日期。您可以像这样比较日期:

var date1 =new Date(logDate);
var date2 = new Date(closureDate);

if(date1.getTime() < date2.getTime()) {
    //date1 is smaller than date2
}

getTime将日期作为时间戳返回(自纪元以来的毫秒数)

于 2013-06-04T09:49:46.637 回答
0

您可以尝试以下从“dd/MM/yyyy HH:mm”格式解析日期的函数

    function GetParsedDate(dt) {
        try {
            var dtValue = null;
            var arr1 = dt.split('/');
            var year = 0; var month = 0; var day = 0; var hour = 0; var minute = 0; var sec = 0;
            if (arr1.length == 3) {
                var arr2 = arr1[2].split(' ');
                if (arr2.length == 2) {
                    var arr3 = arr2[1].split(':');
                    try {
                        year = parseInt(arr2[0], 10);
                        month = parseInt(arr1[1], 10);
                        day = parseInt(arr1[0], 10);
                        hour = parseInt(arr3[0], 10);
                        minute = parseInt(arr3[1], 10);
                        //sec = parseInt(arr3[2], 10);
                        sec = 0;
                        dtValue = new Date(year, month - 1, day, hour, minute, sec);
                    }
                    catch (er) { alert('GetParsedDate (1): ' + er); }
                }
            }
            return dtValue;
        }
        catch (err) { alert('GetParsedDate: ' + err); }
    }
于 2013-07-10T12:01:07.893 回答
0

谢谢!!下面的工作正常!

我知道了。它工作正常。

              var d1=logDate.split(/[\-\ \:]/g);
    var d2=closureDate.split(/[\-\ \:]/g);
    var d3=actionDate.split(/[\-\ \:]/g);

    var lDate = new Date(d1[2], d1[1]-1, d1[0]);
    var cDate = new Date(d2[2], d2[1]-1, d2[0]);
    var aDate = new Date(d3[2], d3[1]-1, d3[0]);

其余代码与我的问题相同。

于 2013-06-05T06:29:21.873 回答
-1

尝试这个

function getDateFromFormat(val, format)
{
  val = val + "";
  format = format + "";
  format = format.replace('mm', 'MM');
  var i_val = 0;
  var i_format = 0;
  var c = "";
  var token = "";
  var token2 = "";
  var x, y;
  var now = new Date();
  var year = now.getYear();
  var month = now.getMonth() + 1;
  var date = 1;
  var hh = now.getHours();
  var mm = now.getMinutes();
  var ss = now.getSeconds();
  var ampm = "";
  while (i_format < format.length)
  {
    // Get next token from format string
    c = format.charAt(i_format);
    token = "";
    while ((format.charAt(i_format) == c) && (i_format < format.length))
    {
      token += format.charAt(i_format++);
    }
    // Extract contents of value based on format token
    if (token == "yyyy" || token == "yy" || token == "y")
    {
      if (token == "yyyy")
      {
        x = 4;
        y = 4;
      }
      if (token == "yy")
      {
        x = 2;
        y = 2;
      }
      if (token == "y")
      {
        x = 2;
        y = 4;
      }
      year = _getInt(val, i_val, x, y);
      if (year == null)
      {
        return 0;
      }
      i_val += year.length;
      if (year.length == 2)
      {
        if (year > 70)
        {
          year = 1900 + (year - 0);
        }
        else
        {
          year = 2000 + (year - 0);
        }
      }
    }
    else if (token == "MMM" || token == "NNN")
    {
      month = 0;
      for (var i = 0; i < MONTH_NAMES.length; i++)
      {
        var month_name = MONTH_NAMES[i];
        if (val.substring(i_val, i_val + month_name.length).toLowerCase() ==   month_name.toLowerCase())
        {
          if (token == "MMM" || (token == "NNN" && i > 11))
          {
            month = i + 1;
            if (month > 12)
            {
              month -= 12;
            }
            i_val += month_name.length;
            break;
          }
        }
      }
      if ((month < 1) || (month > 12))
      {
        return 0;
      }
    }
    else if (token == "EE" || token == "E")
    {
      for (var i = 0; i < DAY_NAMES.length; i++)
      {
        var day_name = DAY_NAMES[i];
        if (val.substring(i_val, i_val + day_name.length).toLowerCase() ==  day_name.toLowerCase())
        {
          i_val += day_name.length;
          break;
        }
      } 
    }
    else if (token == "MM" || token == "M")
    {
      month = _getInt(val, i_val, token.length, 2);
      if (month == null || (month < 1) || (month > 12))
      {
        return 0;
      }
      i_val += month.length;
    }
    else if (token == "dd" || token == "d")
    {
      date = _getInt(val, i_val, token.length, 2);
      if (date == null || (date < 1) || (date > 31))
      {
        return 0;
      }
      i_val += date.length;
    }
    else if (token == "hh" || token == "h")
    {
      hh = _getInt(val, i_val, token.length, 2);
      if (hh == null || (hh < 1) || (hh > 12))
      {
        return 0;
      }
      i_val += hh.length;
    }
    else if (token == "HH" || token == "H")
    {
      hh = _getInt(val, i_val, token.length, 2);
      if (hh == null || (hh < 0) || (hh > 23))
      {
        return 0;
      }
      i_val += hh.length;
    }
    else if (token == "KK" || token == "K")
    {
      hh = _getInt(val, i_val, token.length, 2);
      if (hh == null || (hh < 0) || (hh > 11))
      {
        return 0;
      }
      i_val += hh.length;
    }
    else if (token == "kk" || token == "k")
    {
      hh = _getInt(val, i_val, token.length, 2);
      if (hh == null || (hh < 1) || (hh > 24))
      {
        return 0;
      }
      i_val += hh.length;
      hh--;
    }
    else if (token == "mm" || token == "m")
    {
      mm = _getInt(val, i_val, token.length, 2);
      if (mm == null || (mm < 0) || (mm > 59))
      {
        return 0;
      }
      i_val += mm.length;
    }
    else if (token == "ss" || token == "s")
    {
      ss = _getInt(val, i_val, token.length, 2);
      if (ss == null || (ss < 0) || (ss > 59))
      {
        return 0;
      }
      i_val += ss.length;
    }
    else if (token == "a")
    {
      if (val.substring(i_val, i_val + 2).toLowerCase() == "am")
      {
        ampm = "AM";
      }
      else if (val.substring(i_val, i_val + 2).toLowerCase() == "pm")
      {
        ampm = "PM";
      }
      else
      {
        return 0;
      }
      i_val += 2;
    }
    else
    {
      if (val.substring(i_val, i_val + token.length) != token)
      {
        return 0;
      }
      else
      {
        i_val += token.length;
      }
    }
  }
  // If there are any trailing characters left in the value, it doesn't match
  if (i_val != val.length)
  {
    return 0;
  }
  // Is date valid for month?
  if (month == 2)
  {
    // Check for leap year
    if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))
    { // leap year
      if (date > 29)
      {
        return 0;
      }
    }
    else
    {
      if (date > 28)
      {
        return 0;
      }
    }
  }
  if ((month == 4) || (month == 6) || (month == 9) || (month == 11))
  {
    if (date > 30)
    {
      return 0;
    }
  }
  // Correct hours value
  if (hh < 12 && ampm == "PM")
  {
    hh = hh - 0 + 12;
  }
  else if (hh > 11 && ampm == "AM")
  {
    hh -= 12;
  }
  var newdate = new Date(year, month - 1, date, hh, mm, ss);
  return newdate.getTime();
}

在你的代码中使用这个函数

var lDate=new getDateFromFormat(logDate, "dd/mm/yyyy");
var cDate= new getDateFromFormat(closureDate, "dd/mm/yyyy");
var aDate=new getDateFromFormat(actionDate, "dd/mm/yyyy");
于 2013-06-04T10:04:37.460 回答