代码检查2个日期之间的差异,并附加零分钟。

时间:2017-05-16 07:12:03

标签: javascript html datepicker

  1. 我有2个HTML日期选择器。一旦用户离开第二个日期选择器dateInputone,我需要检查天气两个值是否相同。

  2. 我需要检查的第二件事是用户在日期选择器中输入的天气时间,包含分钟值为零。如果没有,我需要剪切用户输入的分钟并将其附加零。

  3. 以下是我的HTML代码:

    <input id="dateInputone" name="dateipone" type="datetime-local" step="600">
    
    <input id="dateInputtwo" name="dateiptwo" type="datetime-local" step="600" onblur="validate_time(this.value)">
    

    以下是我的JavaScript代码,用于检查天气分钟是否以 ZERO 结尾。

        function validate_time(min)
        {
          var allowed_values = new Array("00");
          var minutes = min.split(':').pop();
          for(var i=0; i <= allowed_values.length; i++)
          {
          if(allowed_values[i] == minutes)
          { 
            return true;
          }
          else
          {
            return minutes[0] + ":00"; 
          }
       }
     }
    

    以下JavaScript代码检查天气日期是否相同

           var date1 = document.getElementById("dateInputone").value;
           var date2 = document.getElementById("dateInpuTwo").value;
           var timeDiff = Math.abs(date2.getTime() - date1.getTime());
           var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24)); 
           alert(diffDays);
    

    如何合并这个脚本代码,以便我可以在一个函数中检查日期和分钟?

1 个答案:

答案 0 :(得分:1)

&#13;
&#13;
var date1El = document.getElementById("dateInputone");
var date2El = document.getElementById("dateInputtwo");

function validate_time(d)
{
  var allowed_values = new Array("00");
  var minutes = d.split(':');
  for(var i=0; i <= allowed_values.length; i++)
  {
    if(allowed_values[i] == minutes[1])
    { 
      return minutes[0]+':'+allowed_values[i];
    }
    else
    {
      return minutes[0]+":00"; 
    }
  }
}

function blurred(){
    var date1 = new Date(validate_time(date1El.value))
    var date2 = new Date(validate_time(date2El.value))
    var timeDiff = Math.abs(date2.getTime() - date1.getTime());
    var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24)); 
    alert(diffDays);
}
&#13;
<input id="dateInputone" name="dateipone" type="datetime-local" step="600">

<input id="dateInputtwo" name="dateiptwo" type="datetime-local" step="600" onblur="blurred()">
&#13;
&#13;
&#13;

这应该有用,但是,有一个问题 - 如果您想添加更多&#34; allowed_values&#34;,此代码无法正常工作 - 您需要返回..:00仅在for循环之后。 另一方面,如果您只需要删除分钟(替换为00),那么它将更容易添加

var date1 = new Date(vdate1El.value).setMinutes(0)

单一功能?没问题:

&#13;
&#13;
function validate_time()
{
  var date1El = document.getElementById("dateInputone");
  var date2El = document.getElementById("dateInputtwo");
  
  var dates = [date1El.value,date2El.value];
  dates = dates.map((d)=>{
    console.log(d,'ddd')
    var allowed_values = new Array("00");
    var minutes = d.split(':');
    console.log('mmm',minutes)
    for(var i=0; i <= allowed_values.length; i++)
    {
      if(allowed_values[i] == minutes[1])
      { 
        return minutes[0]+':'+allowed_values[i];
      }
      else
      {
        return minutes[0]+":00"; 
      }
    }
  })
  
  
    var date1 = new Date(dates[0])
    var date2 = new Date(dates[1])
    console.log(dates,date1,date2)
    var timeDiff = Math.abs(date2.getTime() - date1.getTime());
    var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24)); 
    alert(diffDays);
}
&#13;
<input id="dateInputone" name="dateipone" type="datetime-local" step="600">

<input id="dateInputtwo" name="dateiptwo" type="datetime-local" step="600" onblur="validate_time()">
&#13;
&#13;
&#13;