javascript - 检查两个日期之间的差异并在分钟后附加零的代码。?

标签 javascript html datepicker

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

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

下面是我的 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 代码,用于检查天气分钟是否以结尾。

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

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

最佳答案

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);
}
<input id="dateInputone" name="dateipone" type="datetime-local" step="600">

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

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

会更容易
var date1 = new Date(vdate1El.value).setMinutes(0)

单一功能?没问题:

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);
}
<input id="dateInputone" name="dateipone" type="datetime-local" step="600">

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

关于javascript - 检查两个日期之间的差异并在分钟后附加零的代码。?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43994712/

相关文章:

javascript - 选择菜单中的字体很棒

javascript - 合并两个 Canvas 。将第一个放在第二个上

javascript - slider 未正确渲染

css - 如何设置背景图像的样式并覆盖上面的内容

javascript - 两次追加 DOM 元素 (jQuery)

datepicker - Twitter 的 Bootstrap Datepicker 缺少 Glyphicons

jquery - DatePicker 和 FullCalendar 总是少一天

javascript - 表单输入验证在 Angular 表单中不起作用(使用 plunker)

javascript - 如何制作拖动条来改变垂直高度?

angular - 如何使用日期选择器在 Angular Material 5.0.0 中选择日期范围?