Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript日期时间验证_Javascript_Validation_Date_Calendar - Fatal编程技术网

Javascript日期时间验证

Javascript日期时间验证,javascript,validation,date,calendar,Javascript,Validation,Date,Calendar,当我尝试验证以下日期时,只有一天得到验证。月份和年份没有得到验证。有人能推荐一下代码吗?提前谢谢!!我使用的日期格式是dd/mm/yyyy!!我正在使用IE7(这里没有其他选项) 函数日期检查(){ 风险值日期; var logDate=document.getElementById(“f4”).value; var actionDate=document.getElementById(“f5”).value; var closureDate=document.getElementById(“f

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

函数日期检查(){
风险值日期;
var logDate=document.getElementById(“f4”).value;
var actionDate=document.getElementById(“f5”).value;
var closureDate=document.getElementById(“f6”).value;
var lDate=新日期(logDate);
var cDate=新日期(closureDate);
var aDate=新日期(actionDate);
如果(cDate日期)日期=3;
如果(当前日期

不幸的是,你不能像那样比较日期。 您可以这样比较日期:

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

if(date1.getTime() < date2.getTime()) {
    //date1 is smaller than date2
}
var date1=新日期(logDate);
var date2=新日期(closureDate);
if(date1.getTime()
getTime
将日期返回为时间戳(从纪元开始的毫秒)

试试这个

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

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

您可以尝试以下函数,该函数将日期解析为“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); }
    }

基本上它比较两个数字。这实际上应该行得通。你可以发布你的两个日期,我可以试试吗?这些日期是由用户在JSP页面上给出的。我使用了日期选择器来选择日期。
              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]);
    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); }
    }