在网上看到有人问问题,事实上
显示服务器的时间
同步在
网页上,有多种实现方式,普通人可能会立即想到可以使用Ajax每秒请求的服务器,然后服务器将页面上显示的时间,可以实现,但有一个大的问题是,每一秒的请求的服务器,因此如果
用户,服务器会崩溃(
内存占用率会很大),所以在我看来,这种
方法是不可行的,我在这里给出一个
解决方案,可以实现同步服务器
时间同步,倒计时,但是服务器不占用太多的资源。我写的这个想法:
首先,当用户第一次
浏览网页,服务器首先得到当前时间显示在页面上(如:在ID时间段跨度显示)
第二步是建立一个新的时间来计算每一秒。新的时间将服务器时间作为初始值,然后每次累积一秒钟,并生成新的时间。
第三步,显示第二步计算的时间。
这并不是很简单,总结为一句话:服务器时间作为初始值,而页面自动每隔1秒生成一秒新的积累时间,这样我们就可以保证服务器时间同步,
错误在几秒钟内,就不用介意了,好好看看代码的
执行情况:
11:21:55 / /第一服务器时间显示在这里
$(
函数(){())
无功otime = $(#时间盒);
VaR TS = otime.text()。分裂(:
无功tnums = { parseInt(TS { 0 }),parseInt(TS { 1 }),parseInt(TS { 2 })};
setInterval(){()函数(
tnums = getnexttimenumber(tnums { 0 },tnums { 1 },tnums { 2 });
shownewtime(tnums { 0 },tnums { 1 },tnums { 2 });
},1000);
功能shownewtime(H,M,S){
无功timestr =(0 + h.tostring()),Substr(2)+:
+(0 + m.tostring()),Substr(2)+:
+(0 + s.tostring()),Substr(2);
OTime.text(timestr);
}
功能getnexttimenumber(H,M,S){
如果(+ = s = 60){
s=0;
}
如果(s=0){
如果(+ m = 60){
m=0;
}
}
如果(m=0){
如果(+ = h = 24){
h=0;
}
}
返回{,m,s,};
}
});
本文中的代码没有任何的解释是很简单的(我只是上面显示分钟和秒,你也可以添加
日期,加上H = = 0时,直接从服务器得到一个日期或时间,为第一时间,校对日期)不能在下面的评论中了解,我会及时回复,然后按照这个思路来实现倒计时,同步先说明一下,倒计时的同步是什么,就是建立一个类似的秒杀,结束时间,然后计算当前时间和倒计时结束之间的时间间隔和所需的时间,以确保在不同的
电脑显示器,
浏览器是相同的。代码的实现如下:
同步倒计时
1天,00小时,00分12秒
$(函数(){())
VaR TID = setInterval()函数(){
无功otimebox = $(#时间盒);
无功sytime = otimebox.text();
无功totalsec = gettotalsecond(sytime)- 1;
如果(totalsec > = 0){
OTimebox.text(getnewsytime(totalsec));
{人}
ClearInterval(TID);
}
},1000);
剩下的时间是根据字符串/总秒数计算的。
功能gettotalsecond(timestr){
var;
无功timenums =新的数组();
而(((R = reg.exec(timestr))!= NULL){
Timenums.push(parseInt(R));
}
var = 0,i=0;
如果(timenums.length = = 4){
二= timenums { 0 }×24×3600;
我= 1;
}
二= timenums {我}×3600 + 60×timenums { +我+ + +我timenums { } };
返回第二;
}
根据剩余秒数/生成时间格式
功能getnewsytime(SEC){
var =秒% 60;
秒=(秒S)60
var =秒% 60;
秒=(秒- M)60
var =秒% 24;
var(= H - H)24
无功sytimestr = ;
如果(d > 0){
sytimestr = d.tostring(+);
}
sytimestr + =(0 +)h.tostring(+),Substr(2)
+(0 + m.tostring()),Substr(2)+子
+(0 + s.tostring()),Substr(2)+二;
返回sytimestr;
}
});
为了保证倒计时的准确性,我先用倒计时的时间间隔进入统一计算秒,再由第二代时间格式,时间同步也可以根据上面的例子,直接减少时间,在很多方面,这并不一定是最好的,欢迎大家交流,谢谢!