昨天开发时候遇到一个问题:页面上使用一个checkbox,点击checkbox的时候需要获取到当前的时间,由于不能刷新页面,问题来了:
如何使用javascript获取服务器时间???google了,csdn了,甚至也摆渡了,呵呵,老是见到梅老大的那个获取时间的出现,本人愚钝,无法领悟其中的奥妙,也就是问题没有解决,好像问题也很严重!
顺便附上梅老大的代码:
<
html
><
head
>
< script language = javascript >
// 特别注明:北京时间是格林尼治标准时加八小时,因此我用的起始时间也是从八点起算的
var secondServer = <%= DateDiff( " s " , " 1970-01-01 08:00:00 " , Now()) %> ;
var secondClient = parseInt( new Date().getTime() / 1000 );
var secondSub = secondServer - secondClient; // 两端时间秒差
function meizzTime(n)
... {
var mei = new Date();
//得到一个新的时间
var y = mei.getYear();
var m = mei.getMonth();
var d = (mei.getDay() > 9) ? mei.getDay() : "0" + mei.getDay();
mei.setTime(mei.getTime() + n*1000);
var h = (mei.getHours() > 9) ? mei.getHours() : "0" + mei.getHours();
var m = (mei.getMinutes() > 9) ? mei.getMinutes() : "0" + mei.getMinutes();
var s = (mei.getSeconds() > 9) ? mei.getSeconds() : "0" + mei.getSeconds();
document.getElementById("clock").value = y+"-"+m+"-"+d+" "+ h +":"+ m +":"+ s;
setTimeout("meizzTime(secondSub)", 1000);
}
</ script >
< meta http - equiv = ' Content-Type ' content = ' text/html; charset=gb2312 ' >
< meta http - equiv = " refresh " content = " 1000 " >
< title > 取服务器端时间(秒数) </ title >
</ head >
< body onload = " meizzTime(secondSub) " >
< form name = meizz >< input name = clock size = 80 ></ form >
</ body ></ html >
< script language = javascript >
// 特别注明:北京时间是格林尼治标准时加八小时,因此我用的起始时间也是从八点起算的
var secondServer = <%= DateDiff( " s " , " 1970-01-01 08:00:00 " , Now()) %> ;
var secondClient = parseInt( new Date().getTime() / 1000 );
var secondSub = secondServer - secondClient; // 两端时间秒差
function meizzTime(n)
... {
var mei = new Date();
//得到一个新的时间
var y = mei.getYear();
var m = mei.getMonth();
var d = (mei.getDay() > 9) ? mei.getDay() : "0" + mei.getDay();
mei.setTime(mei.getTime() + n*1000);
var h = (mei.getHours() > 9) ? mei.getHours() : "0" + mei.getHours();
var m = (mei.getMinutes() > 9) ? mei.getMinutes() : "0" + mei.getMinutes();
var s = (mei.getSeconds() > 9) ? mei.getSeconds() : "0" + mei.getSeconds();
document.getElementById("clock").value = y+"-"+m+"-"+d+" "+ h +":"+ m +":"+ s;
setTimeout("meizzTime(secondSub)", 1000);
}
</ script >
< meta http - equiv = ' Content-Type ' content = ' text/html; charset=gb2312 ' >
< meta http - equiv = " refresh " content = " 1000 " >
< title > 取服务器端时间(秒数) </ title >
</ head >
< body onload = " meizzTime(secondSub) " >
< form name = meizz >< input name = clock size = 80 ></ form >
</ body ></ html >
一火之下在csdn上发了贴子:http://community.csdn.net/Expert/topic/5055/5055907.xml?temp=5.111331E-02 呵呵,好家伙,几分钟内n个人给了n个解决方法,看来csdn上热心的兄弟真不少!!这里再次感谢大家!!
在大家的提示下终于找到了解决的方法:
1、做一个动态显示时间的页面,2.aspx,代码很高深,但是也太。。。。。。。他nnd的简单了
<%=
now()
%>
2、用另外一个页面1.htm获取2.aspx页面中的内容
<
html
>
< script language ="JavaScript" > ...
//获取当前时间作为一个不相同的随机数
function getNowTime()
...{
var d, s ;
d = new Date();
s = d.getFullYear();
s += "-" +d.getDate();
s += "-"+d.getHours();
s += "-"+d.getMinutes();
s += "-"+d.getSeconds();
s += "-"+d.getMilliseconds();
return s;
}
//根据2.aspx中返回的服务器时间,2.aspx中要传入一个不相同的随机数
//有兴趣的可以试下不添加随机数作为参数,估计很郁闷^.^
//原理:跟ie中保留临时文件有关系,具体就不知道如何描述了,呵呵
function getServerTime()
...{
var objXMLHTTP=new ActiveXObject("MICROSOFT.XMLHTTP");
objXMLHTTP.open("GET","2.aspx?nowTime="+getNowTime(),false);
objXMLHTTP.send("");
var strReturn=objXMLHTTP.ResponseText;
document.getElementById("Text1").value= strReturn;
}
</ script >
< body >
< span id ="online_num" >< INPUT id ="Checkbox1" type ="checkbox" name ="Checkbox1" onclick =getServerTime(); >
< INPUT id ="Text1" type ="text" name ="Text1" ></ span >
</ body >
</ html >
< script language ="JavaScript" > ...
//获取当前时间作为一个不相同的随机数
function getNowTime()
...{
var d, s ;
d = new Date();
s = d.getFullYear();
s += "-" +d.getDate();
s += "-"+d.getHours();
s += "-"+d.getMinutes();
s += "-"+d.getSeconds();
s += "-"+d.getMilliseconds();
return s;
}
//根据2.aspx中返回的服务器时间,2.aspx中要传入一个不相同的随机数
//有兴趣的可以试下不添加随机数作为参数,估计很郁闷^.^
//原理:跟ie中保留临时文件有关系,具体就不知道如何描述了,呵呵
function getServerTime()
...{
var objXMLHTTP=new ActiveXObject("MICROSOFT.XMLHTTP");
objXMLHTTP.open("GET","2.aspx?nowTime="+getNowTime(),false);
objXMLHTTP.send("");
var strReturn=objXMLHTTP.ResponseText;
document.getElementById("Text1").value= strReturn;
}
</ script >
< body >
< span id ="online_num" >< INPUT id ="Checkbox1" type ="checkbox" name ="Checkbox1" onclick =getServerTime(); >
< INPUT id ="Text1" type ="text" name ="Text1" ></ span >
</ body >
</ html >
嘿嘿,废话一大堆,原来就这么简单,欢迎大家拍砖!!!!