如何在网页中显示服务器时间

如何在网页中显示服务器时间,第1张

以asp+js为例说明。

下面分析代码结构,先是获取服务器时间

代码如下:

<%

d=Date()

t=Time()

%>

var t0=new Date().getTime()

var nyear=<%=Year(d)%>

var nmonth=<%=Month(d)%>

var nday=<%=Day(d)%>

var nwday=<%=WeekDay(d)%>-1

var nhrs=<%=Hour(t)%>

var nmin=<%=Minute(t)%>

var nsec=<%=Second(t)%>

//获得本机时间和服务器时间之差

var dectime=new Date(nyear,nmonth-1,nday,nhrs,nmin,nsec).getTime()-t0

nday=-1

//用于显示时间的span

document.write("<span id=\"clock\" style=\"word-break:keep-all\"></span>")

//时间计算函数

function NewTick(){

var noww=new Date()

var t1=noww.getTime()

noww.setTime(t1+dectime)

if(noww.getDate()!=nday){

nyear=noww.getFullYear()nmonth=noww.getMonth()+1nwday=noww.getDay()nday=noww.getDate()

}

nhrs=noww.getHours()nmin=noww.getMinutes()nsec=noww.getSeconds()

}

//时间显示函数:

function Draw(){

NewTick()//先计算

var s=nyear+'年'+nmonth+'月'+nday+'日 '+'星期'+cweekday(nwday)+' '+shapetime(nhrs,nmin,nsec)

s+=" 农历"+lmonth+"月"+lday//显示农历

document.getElementById("clock").innerHTML=s

//每隔500毫秒重新获取一下本机时间:

setTimeout("Draw()",500)

}

//开始显示:

Draw()

而服务器时间一般不会误差太大,所以最好显示服务器时间下面以asp+js为例说明。下面分析代码结构,先是获取服务器时间:var t0=new Date().getTime()

var nyear=

var nmonth=

var nday=

var nwday=-1

var nhrs=

var nmin=

var nsec=

//获得本机时间和服务器时间之差

var dectime=new Date(nyear,nmonth-1,nday,nhrs,nmin,nsec).getTime()-t0nday=-1//用于显示时间的span

document.write("")

//时间计算函数:

function NewTick(){

var noww=new Date()

var t1=noww.getTime()

noww.setTime(t1+dectime)

if(noww.getDate()!=nday){

nyear=noww.getFullYear()nmonth=noww.getMonth()+1nwday=noww.getDay()nday=noww.getDate()}nhrs=noww.getHours()nmin=noww.getMinutes()nsec=noww.getSeconds()}//时间显示函数:

function Draw(){

NewTick()//先计算

var s=nyear+'年'+nmonth+'月'+nday+'日 '+'星期'+cweekday(nwday)+' '+shapetime(nhrs,nmin,nsec)

s+=" 农历"+lmonth+"月"+lday//显示农历

document.getElementById("clock").innerHTML=s

//每隔500毫秒重新获取一下本机时间:

setTimeout("Draw()",500)

}//开始显示:

Draw()其他问题:服务器获取的时间不能在本地缓存,所以要在代码中加入缓存控制函数;

还要防止其他网站盗链你的服务器时间代码,所以要加入防盗链函数。

网页前端是无法获取到服务器时间的,只有通过后台取值然后进行传递。 使用Ajax每秒获取服务器的时间并显示出来,但是服务器网络延迟较高,这样误差较大。

示例采用Head的方法处理,第一次页面加载时从服务器端获得时间,以这个时间为基准,客户端再用js每秒累加。

完整代理示例:

<html>

<head>

<title>html网页获取服务器的时间</title>

<script language="JavaScript" type="text/javascript">

<!--程序执行需要耗费时间,误差在2秒以下-->

var xmlHttp = false

<!--获取服务器时间-->

try {

xmlHttp = new ActiveXObject("Msxml2.XMLHTTP")

} catch (e) {

try {

    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP")

} catch (e2) {

    xmlHttp = false

}

}

if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {

xmlHttp = new XMLHttpRequest()

}

xmlHttp.open("GET", "

, false)

xmlHttp.setRequestHeader("Range", "bytes=-1")

xmlHttp.send(null)

severtime=new Date(xmlHttp.getResponseHeader("Date"))

<!--获取服务器日期-->

var year=severtime.getFullYear()

var month=severtime.getMonth()+1

var date=severtime.getDate()

<!--获取服务器时间-->

var hour=severtime.getHours()

var minu=severtime.getMinutes()

var seco=severtime.getSeconds()

<!--格式化输出服务器时间-->

function getSeverTime(){

seco++

if(seco==60){

minu+=1

seco=0

}

if(minu==60){

   hour+=1

   minu=0

}

if(hour==24){ 

date+=1

hour=0

}

<!--日期处理-->

if(month==1||month==3||month==5||month==7

||month==8||month==10||month==12)

{

if(date==32)

{

   date=1

   month+=1

   }

}else if(month==4||month==6||month==9||month==11){

if(date==31){

   date=1

   month+=1

   }

}else if(month==2){

   if(year%4==0&&year%100!=0){<!--闰年处理-->

    if(date==29){

     date=1

     month+=1

    }

   }else{

    if(date==28){

     date=1

     month+=1

    }

   }

}

if(month==13){

year+=1

month=1

}

sseco=addZero(seco)

sminu=addZero(minu)

shour=addZero(hour)

sdate=addZero(date)

smonth=addZero(month)

syear=year

innerdata="当前服务器时间:"

document.getElementById("servertime").innerHTML=innerdata+syear+"-"+smonth+"-"+sdate+" "+shour+":"+sminu+":"+sseco

setTimeout("getSeverTime()",1000)

setTimeout("getClientTime()",100)

}

function addZero(num) {

num=Math.floor(num)

return ((num <= 9) ? ("0" + num) : num)

}

</script>

</head>

<body onLoad="getSeverTime()">

<p id="servertime"></p>

<p id="clienttime"></p>

<p id="xctime"></p>

</body>

</html>

【扩展】网页前端获取当前时间,调用date()函数即可。

示例代码:

<span id="cg"></span>

<script>setInterval("cg.innerHTML=new Date().toLocaleString()",1000)</script>


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/421113.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-25
下一篇2023-05-25

发表评论

登录后才能评论

评论列表(0条)

    保存