[英]javascript compare Two Times
尝试使其在16:30:00和17:30:00之间更改,以更改文本字体颜色
尝试嵌套if语句
function startTime() { var today = new Date(); var h = today.getHours(); var m = today.getMinutes(); var s = today.getSeconds(); m = checkTime(m); s = checkTime(s); document.getElementById('txt').innerHTML = h + ":" + m + ":" + s; var t = setTimeout(startTime, 500); if ((h>=16 && m >=30) && (h<=17 && m<=30)) { document.getElementById("txt").style.color = "red"; } else { document.getElementById("txt").style.color = "black"; } } function checkTime(i) { if (i < 10) {i = "0" + i}; // add zero in front of numbers < 10 return i; }
尝试使用setInterval()看起来更清晰:
function startTime() {
var today = new Date();
var h = today.getHours();
var m = today.getMinutes();
if((h==16 && m>=30) || (h==17 && m<=30)){
document.getElementById("txt").style.color = "red";
}
else
{
document.getElementById("txt").style.color = "black";
}
};
setInterval(startTime, 500);
您逻辑中的主要错误是要查找分钟数,该分钟数必须小于等于30且大于等于30。部分评估为true的唯一方法是,如果分钟数是30。
我将时间标准化(这样,小时,分钟和秒的每种组合都可以用唯一的数字表示),然后将其用于比较。
function startTime(el) { var today = new Date(); var hour = today.getHours(), minute = today.getMinutes(), second = today.getSeconds(); var normalized_time = normalizeTime(hour, minute, second); document.getElementById(el).innerHTML = hour + ":" + padTime(minute) + ":" + padTime(second); document.getElementById(el).style.color = normalized_time >= normalizeTime(16, 30, 0) && normalized_time <= normalizeTime(17, 30, 0) ? 'red' : 'black'; } /* * Add a 0 to the beginning of the number if one-digit number */ function padTime(i) { return i < 10 ? '0' + i : i; } /* * Converts the time to a normalized version */ function normalizeTime(h, m, s) { return s + (60 * m) + (60 * 60 * h); } var t = setInterval(startTime, 500, 'txt');
<span id="txt"></span>
编辑 :根据您的问题,您要考虑小时和分钟进行比较,所以我没有包括第二部分。
下面的函数获得一个相对于时间的整数值,该值随后用于比较。
function getSeconds(hh,mm,ss)
{
return (Number(hh) * 60 * 60) + (Number(mm) * 60) + Number(ss);
}
完整的代码:
function getSeconds(hh,mm,ss)
{
return (Number(hh) * 60 * 60) + (Number(mm) * 60) + Number(ss);
}
function startTime() {
var today = new Date();
var h = today.getHours();
var m = today.getMinutes();
var s = today.getSeconds();
m = checkTime(m);
s = checkTime(s);
document.getElementById('txt').innerHTML =
h + ":" + m + ":" + s;
var t = setTimeout(startTime, 500);
var timeNow = getSeconds(h,m,s);
//if ((h>=16 && m >=30) && (h<=17 && m<=30))
if (timeNow >= getSeconds(16,30,0) && timeNow <= getSeconds(17,30,00))
{
document.getElementById("txt").style.color = "red";
}
else
{
document.getElementById("txt").style.color = "black";
}
}
function checkTime(i) {
if (i < 10) {i = "0" + i}; // add zero in front of numbers < 10
return i;
}
startTime();
更新小提琴
先前的回应
试试小提琴
您的代码的问题是,您正在将m
与矛盾的条件进行比较。
我将以下的小时和分钟连接起来,并用于时间比较
var hrs = Number(h+'.'+m);
function startTime() {
var today = new Date();
var h = today.getHours();
var m = today.getMinutes();
var s = today.getSeconds();
m = checkTime(m);
s = checkTime(s);
document.getElementById('txt').innerHTML =
h + ":" + m + ":" + s;
var t = setTimeout(startTime, 500);
var hrs = Number(h+'.'+m);
//if ((h>=16 && m >=30) && (h<=17 && m<=30))
if (hrs >= 16.30 && hrs <= 17.30)
{
document.getElementById("txt").style.color = "red";
}
else
{
document.getElementById("txt").style.color = "black";
}
}
function checkTime(i) {
if (i < 10) {i = "0" + i}; // add zero in front of numbers < 10
return i;
}
startTime();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.