从以下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;
当我评估这个时,我总是得到更少的时间!我该如何更正我的代码?
答案 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)
代码的工作示例
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;
答案 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)
希望它有所帮助。