UTC的Javascript计时器取决于计算机时间?
所以这个脚本(归功于),基本上是一个Javascript每日倒计时。我将getDate变量更改为getUTCDate,但它仍然不是UTC,取决于客户端时钟。如何解决这个问题,使其不依赖于客户端计算机时间,以便在客户端计算机时间错误时不会错误显示倒计时??谢谢 下面是javascript代码:UTC的Javascript计时器取决于计算机时间?,javascript,client,server-side,countdown,utc,Javascript,Client,Server Side,Countdown,Utc,所以这个脚本(归功于),基本上是一个Javascript每日倒计时。我将getDate变量更改为getUTCDate,但它仍然不是UTC,取决于客户端时钟。如何解决这个问题,使其不依赖于客户端计算机时间,以便在客户端计算机时间错误时不会错误显示倒计时??谢谢 下面是javascript代码: <script type="text/javascript"> var current = "Test"; var startHour = 0; var startMinute = 0;
<script type="text/javascript">
var current = "Test";
var startHour = 0;
var startMinute = 0;
var endHour = 23;
var endMinute = 55;
var tz = 0;
var montharray=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
if (startMinute < 10){startMinute = "0" + startMinute;}
function countdown()
{
var today=new Date();
var todayy=today.getYear();
if (todayy < 1000)
{todayy += 1900;}
var todaym = today.getUTCMonth();
var todayd = today.getUTCDate();
var todayh = today.getUTCHours();
var todaymin = today.getUTCMinutes();
var todaysec = today.getUTCSeconds();
// add a zero in front of numbers<10
todaymin = checkTime(todaymin);
todaysec = checkTime(todaysec);
var startString = parseInt(startHour + "" + startMinute + "00");
var nowString1 = montharray[todaym] + " " + todayd + ", " + todayy + " " + todayh + ":" + todaymin + ":" + todaysec;
var nowString = Date.parse(nowString1) + (tz*1000*60*60);
var nowTime = parseInt(todayh + "" + todaymin + "" + todaysec);
var endString1 = (montharray[todaym] + " " + todayd + ", " + todayy + " " + endHour + ":" + endMinute);
var endString = Date.parse(endString1) - (today.getTimezoneOffset() * (1000*60));
var dd = endString - nowString;
var dday = Math.floor(dd/(60*60*1000*24)*1);
var dhour = Math.floor((dd%(60*60*1000*24))/(60*60*1000)*1);
var dmin = Math.floor(((dd%(60*60*1000*24))%(60*60*1000))/(60*1000)*1);
var dsec = Math.floor((((dd%(60*60*1000*24))%(60*60*1000))%(60*1000))/1000*1);
if ((dhour <= 0 && dmin <= 0 && dsec <= 0) || (nowTime < startString))
{
document.getElementById('count2').innerHTML = current;
document.getElementById('count2').style.display = "inline";
document.getElementById('count2').style.width = "390px";
document.getElementById('dhour').style.display = "none";
document.getElementById('dmin').style.display = "none";
document.getElementById('dsec').style.display = "none";
document.getElementById('hours').style.display = "none";
document.getElementById('minutes').style.display = "none";
document.getElementById('seconds').style.display = "none";
setTimeout("countdown()",500);
return;
}
else
{
document.getElementById('count2').style.display = "none";
document.getElementById('dhour').style.display = "inline";
document.getElementById('dmin').style.display = "inline";
document.getElementById('dsec').style.display = "inline";
document.getElementById('hours').style.display = "inline";
document.getElementById('minutes').style.display = "inline";
document.getElementById('seconds').style.display = "inline";
document.getElementById('dhour').innerHTML = dhour;
document.getElementById('dmin').innerHTML = dmin;
document.getElementById('dsec').innerHTML = dsec;
setTimeout("countdown()",500);
}
if (dhour < 2 || (dhour == 2 && dmin == 0 && dsec == 0))
{
document.getElementById('dhour').style.color = "yellow";
document.getElementById('dmin').style.color = "yellow";
document.getElementById('dsec').style.color = "yellow";
}
if (dhour < 1 || (dhour == 1 && dmin == 0 && dsec == 0))
{
document.getElementById('dhour').style.color = "red";
document.getElementById('dmin').style.color = "red";
document.getElementById('dsec').style.color = "red";
}
}
function checkTime(i)
{
if (i<10)
{
i="0" + i;
}
return i;
}
</script>
var current=“测试”;
var startHour=0;
var startMinute=0;
var endHour=23;
var endMinute=55;
var tz=0;
var montharray=新数组(“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”);
如果(startMinute<10){startMinute=“0”+startMinute;}
函数倒计时()
{
var today=新日期();
var today=today.getYear();
如果(今天<1000)
{今天+=1900;}
var todaym=today.getUTCMonth();
var todayd=today.getUTCDate();
var todayh=today.getUTCHours();
var todaymin=today.getUTCMinutes();
var todaysec=today.getUTCSeconds();
//在数字前面加一个零我能想到的第一个解决方案是,向客户端发送计时器将持续的秒数,而不是时间戳,但由于HTTP传输延迟,它可能不准确