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

时间:2017-01-11 17:34:15

标签: javascript html function time compare

从以下html和javascript代码中我希望将输入时间与当前时间进行比较!如果输入时间小于2小时我想打印"更少的时间"在标签上,如果它超过2小时我想打印"足够的时间"在标签上!



 
    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>
&#13;
&#13;
&#13;

当我评估这个时,我总是得到更少的时间!我该如何更正我的代码?

4 个答案:

答案 0 :(得分:1)

您并不认为您的字段中的输入值必须解析到Date值才能用于计算:

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并相应地使用。

答案 1 :(得分:1)

代码的工作示例

&#13;
&#13;
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";

  }
    }
}
&#13;
<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>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

这实际上是一种类型不匹配。您正在将时间戳与时间字符串进行比较。 getTime()返回指定特定日期的时间的时间戳,而时间字符串只是02:02之类的字符串,不指定日期。

您需要从输入中收集日期和时间,然后从输入中构建Date对象,然后比较两个getTime()结果。这样你就可以比较两个时间戳了。

由于午夜时分发生的事情,输入包含日期非常重要。如果当前时间是23:30,输入时间是01:15,那么您的代码将如何知道用户明天上午1:15是否意味着?

答案 3 :(得分:0)

getTime()返回毫秒数,因此要获得两个小时,只需乘以1000 * 60 * 60即可得到一小时(毫秒)。

元素将包含一个字符串,如“12:30”并且必须转换,这个可能会对您有所帮助:

Convert string to time JavaScript (h:m)

希望它有所帮助。