显示服务器端的时间 要用 Ajax

解决方案 »

  1.   

    或者页面打开时取一次服务器端时间 然后自己setInterval计时 
      

  2.   

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>时间矫正器 by songpeng</title>
    </head><body>
    <form id="Form1" action="time.asp">
    <p>
        服务器端时间:<input name="ServerTime" type="text" id="ServerTime"  
            value="<%=now() & ":" & Cstr((timer*1000)   Mod   1000) %>" size="30"/>
    </p>
    <p>
    本地时间:<input name="LocalTime" type="text" id="LocalTime" size="30"   />
    </p>
        注意:服务器时间会受网络传输速度影响
    <input type="hidden" value="<%
    if request("cnt") = "" then
    response.Write "0" 
    else
    response.Write cint(request("cnt")) +  1
    end if %>" id="cnt" name="cnt" />
    <%
    response.Write request("ServerTime") 
    response.Write "<br>"
    response.Write request("LocalTime")
    %>
    <input type="hidden" id="diff" name="diff" value="0" />

    </form>
    <p>&nbsp;</p>
    <table width="694" height="104">
    <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    </tr>
    <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    </tr>
    </table>
    <p>&nbsp;</p>
    </body>
    <script language="javascript">function $(objID)
    {
    return document.getElementById(objID);
    }var ST = new Date(<%=year(date())%>,<%=month(date()) -1%>,<%=day(date())%>,
    <%=hour(now())%>,<%=minute(now())%>,<%=second(now())%>,<%=Cstr((timer*1000) Mod 1000)%>);
    var LT = new Date();$("diff").value = ST.getTime() - LT.getTime();function showTime()
    {
    var ld = new Date();
    var sd = new Date();
    var diff = $("diff").value;
    if(diff.indexOf("-") > -1)
    {
    sd.setTime(ld.getTime() - parseInt(diff.substr(1,diff.length-1)));
    }
    else
    {
    sd.setTime(ld.getTime() + $("diff").value);
    }
    displayTime("LocalTime",ld);
    displayTime("ServerTime",sd)
    }function displayTime(objID,d)
    {
    var s = "",c = ":";

    s += d.getYear() + "-";
    s += d.getMonth() + 1 + "-";
    s += d.getDate();

    s += " ";
    s += d.getHours() + c;
    s += d.getMinutes() + c;
    s += d.getSeconds() + c;
    s += d.getMilliseconds();

    $(objID).value = s;
    }setInterval("showTime()",60);</script>
    </html>
      

  3.   

    楼上的几位说的都有道理
    setInterval,利用这个函数!
      

  4.   

    我现在用的是struts+hibernate+spring开发的,现在的问题是如果我用ajax每秒不停的向后台取时间的话,那服务器负载会过大,如果计算服务器与本地时间的差值进行计算的话,会有一个网络延时的问题,这个问题一直困扰着我们,楼上的各位牛人们可否给出一个比较好的解决办法呢,最好有示例代码,在这里我先谢谢各位老大了,这个帖子我再加分,希望可以有一个满意的答案:)
      

  5.   

    恐怕难有好的纯JS的办法,JS的setInterval即使没有网络延时,在实际运行中也会因为诸如IE无响应等原因而导致计时不准。
      

  6.   

    我觉得计算时间差比较好,毕竟服务器和本地的时钟性能差别不是特别大。关键在于如何考虑,网络延时的问题。我觉得可以这样,从客户端发个本地时间到服务器,服务端再将收到的时间和服务器时间一同发送到客户端,到客户端后可以比对自己发送和收到的时间,算出网络延迟,再同收到的服务器时间,比较,算出,本地与服务器的时间差。偶是菜鸟,随便一说。hah
      

  7.   

    谢谢各位XDJM哈~大家都有分哈~
      

  8.   

    谢谢各位XDJM帮忙了哈~大家都有分哈~