【问题标题】:Javascript DateTime validationJavascript 日期时间验证
【发布时间】:2013-06-04 09:41:15
【问题描述】:

当我尝试验证以下日期时,只有一天得到验证。月份和年份没有得到验证。有人可以为此建议代码吗?提前致谢!!我使用的日期格式是dd/mm/yyyy!!我正在使用 IE7(这里没有其他选项)。

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

【问题讨论】:

    标签: javascript validation date calendar


    【解决方案1】:

    很遗憾,您无法像这样比较日期。 您可以像这样比较日期:

    var date1 =new Date(logDate);
    var date2 = new Date(closureDate);
    
    if(date1.getTime() < date2.getTime()) {
        //date1 is smaller than date2
    }
    

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

    【讨论】:

    • 基本上它比较两个数字。那应该确实有效。你能把你的两个日期贴出来让我试试吗?
    • 日期由用户在 JSP 页面上给出。我使用日期选择器来选择日期。
    【解决方案2】:

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

    我明白了。它工作正常。

                  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]);
    

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

    【讨论】:

      【解决方案3】:

      您可以尝试以下从 "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); }
          }
      

      【讨论】:

        【解决方案4】:

        试试这个

        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-05-13
          • 2015-07-18
          • 2016-11-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-03-01
          • 1970-01-01
          相关资源
          最近更新 更多