我的问题是只显示客户端时间,但要显示服务器的时间每秒钟.
function GetCount(ddate,iid){
var date = new Date();
dateNow = date;
// if time is already past
if(amount < 0){
}
// else date is still good
else{
days=0;hours=0;mins=0;secs=0;out="";
amount = Math.floor(amount/1000);//kill the "milliseconds" so just secs
days=Math.floor(amount/86400);//days
amount=amount%86400;
hours=Math.floor(amount/3600);//hours
amount=amount%3600;
mins=Math.floor(amount/60);//minutes
amount=amount%60;
secs=Math.floor(amount);//seconds
document.getElementById(iid).innerHTML=days;
document.getElementById('countbox1').innerHTML=hours;
document.getElementById('countbox2').innerHTML=mins;
document.getElementById('countbox3').innerHTML=secs;
setTimeout(function(){GetCount(ddate,iid)}, 1000);
}
}
5条答案
按热度按时间gg58donl1#
您需要服务器在页面加载时或通过XMLHttpRequest向JavaScript提供时间。
hzbexzde2#
要在JavaScript中从客户端获取服务器时间,您需要进行 AJAX 调用。你知道怎么打这种电话吗?
你基本上会做另一个页面(或web方法等),显示/返回时间。然后使用XMLHttpRequest对象进行调用并获取结果。
wf82jlnq3#
我建议使用更现代的FETCH https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API来代替 AJAX
noj0wjuj4#
如果你想避免所有的网络流量检查时间与服务器每一秒只是:(1)让服务器以页面加载时存储在JS变量中的方式来传递时间;(2)还存储页面加载时的客户机时间;(3)使用setInterval更新时间(每1000毫秒或根据您的需要),方法是获取当前客户端时间减去页面加载时的客户端时间,作为页面加载时的服务器时间的偏移量。(显然,如果用户在页面运行时更新PC时钟,这一切都会出错,但有多少用户会这样做呢?如果他们这样做了,那会是世界末日吗?)
如果你真的想要每一秒的实际服务器时间-为什么?这似乎有点浪费带宽,但如果您必须这样做,请按照前面的建议使用Ajax。如果你不熟悉Ajax,我建议你使用Google查找一些教程--如果你使用JQuery,你只需要几行代码就可以做到。别激动
或者把你的屏幕时钟放在一个IFRAME里,它会反复地重新加载自己。只是因为我有时怀念IFRAME的日子。
qco9c6ql5#
如果您遇到服务器时间与客户端时钟不同的问题,我只查找一次以分钟为单位的服务器时间增量,然后将其添加到新Date()的分钟: