Javascript 如何获得每秒钟的服务器时间
我的问题是只显示客户端时间,但希望每秒钟显示一次服务器时间Javascript 如何获得每秒钟的服务器时间,javascript,Javascript,我的问题是只显示客户端时间,但希望每秒钟显示一次服务器时间 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(a
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);
}
}
函数GetCount(ddate,iid){
变量日期=新日期();
dateNow=日期;
//如果时间已经过去
如果(金额<0){
}
//否则日期还是好的
否则{
天=0;小时=0;分钟=0;秒=0;out=“”;
amount=Math.floor(amount/1000);//去掉“毫秒”,只需秒
天数=数学下限(金额/86400);//天
金额=金额%86400;
小时=数学地板(数量/3600);//小时
金额=金额%3600;
分钟=数学地板(数量/60);//分钟
金额=金额%60;
秒=Math.floor(数量);//秒
document.getElementById(iid).innerHTML=days;
document.getElementById('countbox1')。innerHTML=hours;
document.getElementById('countbox2')。innerHTML=min;
document.getElementById('countbox3')。innerHTML=secs;
setTimeout(函数(){GetCount(ddate,iid)},1000);
}
}
您需要您的服务器向JavaScript提供时间,无论是在页面加载还是通过XMLHttpRequest。您需要您的服务器向JavaScript提供时间,无论是在页面加载还是通过XMLHttpRequest。要从JavaScript客户端获取服务器时间,您需要进行ajax调用。 你知道怎么打那种电话吗
基本上,您将创建另一个显示/返回时间的页面(或web方法等)。然后,您将使用XMLHttpRequest对象进行调用并获得结果。要使用javascript从客户端获取服务器时间,您需要进行ajax调用。 你知道怎么打那种电话吗
基本上,您将创建另一个显示/返回时间的页面(或web方法等)。然后,您将使用XMLHttpRequest对象进行调用并获得结果。如果您希望避免所有网络流量,请每秒检查服务器的时间,只需:(1)让服务器以您在页面加载时存储在JS变量中的方式传递时间;(2) 还存储页面加载时的客户端时间;(3) 使用setInterval通过获取当前客户端时间减去页面加载时的客户端时间作为页面加载时服务器时间的偏移量来更新时间(每1000毫秒或任意频率)。(显然,如果用户在页面运行时更新电脑时钟,这一切都会出错,但有多少用户会这样做?如果他们这样做了,那会是世界末日吗?) 如果您真的想要每秒的实际服务器时间-为什么?这似乎有点浪费带宽,即使没有什么好处,但如果必须这样做,请按照前面的建议使用Ajax。如果您不熟悉Ajax,我建议您使用Google查找一些教程——如果您使用JQuery,只需几行代码即可完成。简单
或者把你的屏幕时钟放在一个IFRAME中,它会反复地重新加载自己。只是因为我有时会怀念IFRAMEs的日子 如果您想避免所有网络流量,只需每隔一秒检查服务器的时间:(1)让服务器以您在页面加载时存储在JS变量中的方式传递时间;(2) 还存储页面加载时的客户端时间;(3) 使用setInterval通过获取当前客户端时间减去页面加载时的客户端时间作为页面加载时服务器时间的偏移量来更新时间(每1000毫秒或任意频率)。(显然,如果用户在页面运行时更新电脑时钟,这一切都会出错,但有多少用户会这样做?如果他们这样做了,那会是世界末日吗?) 如果您真的想要每秒的实际服务器时间-为什么?这似乎有点浪费带宽,即使没有什么好处,但如果必须这样做,请按照前面的建议使用Ajax。如果您不熟悉Ajax,我建议您使用Google查找一些教程——如果您使用JQuery,只需几行代码即可完成。简单
或者把你的屏幕时钟放在一个IFRAME中,它会反复地重新加载自己。只是因为我有时会怀念IFRAMEs的日子 如果遇到服务器时间与客户端时钟不同的问题,我只查找一次以分钟为单位的服务器时间增量,然后将其添加到新日期的分钟数()
如果遇到服务器时间与客户端时钟不同的问题,我只查找一次以分钟为单位的服务器时间增量,然后将其添加到新日期的分钟()
var refDateTime = new Date();
refDateTime.setMinutes(refDateTime.getMinutes() + getServerTimeDelta());
// ...
var serverTimeDelta;
function getServerTimeDelta(recalc) {
var xmlHttp;
if (recalc || !serverTimeDelta) {
try {
if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
} else {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
} catch(err1) {
//IE
try {
xmlHttp = new ActiveXObject('Msxml2.XMLHTTP');
} catch(err2) { /* swallow it */ }
}
if (xmlHttp) {
xmlHttp.open('HEAD', window.location.href.toString(), false);
xmlHttp.setRequestHeader("Content-Type", "text/html");
xmlHttp.send('');
var serverDateTime = xmlHttp.getResponseHeader("Date");
if (serverDateTime) {
var dateNow = new Date();
var serverDate = new Date(serverDateTime);
var delta = serverDate.getTime() - dateNow.getTime();
// Convert to minutes
serverTimeDelta = parseInt((delta / 60000) + '');
if (!serverTimeDelta) serverTimeDelta = 0.01;
} else {
serverTimeDelta = 0.011; // avoid auto recalc
}
} else {
serverTimeDelta = 0.012;
}
}
return serverTimeDelta;
}