将当前时间与javascript中的输入时间进行比较

新手上路,请多包涵

从下面的 html 和 javascript 代码我希望将输入时间与当前时间进行比较!如果输入时间少于 2 小时,我想在标签中打印“Less time”,如果超过 2 小时,我想在标签中打印“sufficient time”!


    function test(){
    	var element = document.getElementById("time").value;
    	var d = new Date();
        var n = d.getTime();
    	if(element-n>2){
    		 document.getElementById("check").innerHTML="sufficient time";
    	}
    	else{
    		document.getElementById("check").innerHTML="Less time";

    	}
    }

     <html>

    <body>
    	<form>
    		<span>Time</span>
    	<input type="time" id="time">

    		  <input type="button" value="CHECK"   onclick="test();"> <br>
    		<label id="check"></label>
              <input class="button" type=reset name=reset value=Cancel>
    	</form>
    </body>
    </html>

当我评估这个时,我总是得到更少的时间!我怎样才能更正我的代码?

原文由 Sachini Karunaratne 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 738
2 个回答

您的代码的工作示例

 function test() {

  var element = document.getElementById("time").value;

  if (element == "") {
  alert("Please Enter Time");
    return false;
  }
  else {

  // get system local time
  var d = new Date();
  var m = d.getMinutes();
  var h = d.getHours();
  if(h == '0') {h = 24}

  var currentTime = h+"."+m;
  console.log(currentTime);

  // get input time
  var time = element.split(":");
  var hour = time[0];
  if(hour == '00') {hour = 24}
  var min = time[1];

  var inputTime = hour+"."+min;
  console.log(inputTime);

  var totalTime = currentTime - inputTime;
  console.log(totalTime);

  if ((Math.abs(totalTime)) > 2) {
    document.getElementById("check").innerHTML = "sufficient time";
  }
  else {
    document.getElementById("check").innerHTML = "Less time";

  }
    }
}
 <html>

<body>
  <form>
    <span>Time</span>
    <input type="time" id="time" required>

    <input type="button" value="CHECK" onclick="return test();">
    <br>
    <label id="check"></label>
    <input class="button" type=reset name=reset value=Cancel>
  </form>
</body>

</html>

原文由 Object object 发布,翻译遵循 CC BY-SA 3.0 许可协议

您没有考虑必须将字段中的输入值 解析 为日期值才能在计算中使用:

 function test(){
    var timeNow = new Date();
    var tm = document.getElementById("time");
    var timeParts = tm.split(":");
    var inputTime = new Date(timeNow.getYear() , timeNow.getMonth() ,     timeNow.getDate() , parseInt(timeParts[0]), parseInt(timeParts[1]), 0, 0);

    var diff = Math.abs(timeNow.getTime() - inputTime.getTime());

    if( diff > 2*60*60*1000 )
        document.getElementById("check").innerHTML="sufficient  time";
    else
        document.getElementById("check").innerHTML="Less time";
     }

我假设您正在检查当前时间之前或之后的两个小时。如果不是,请随意删除 Math.abs 并相应地使用。

原文由 dev8080 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题