zoukankan      html  css  js  c++  java
  • [Javascript] 在客户端实时显示服务器的时间

    ServerClock.js 代码如下:

    /*
    名称:服务器时钟(一次读取,实时显示)
    功能:在客户端浏览器上显示服务器端的时间。
    原理:    
        算法步骤:
        1. 获取服务端的日期时间。
        2. 根据客户端浏览器的时间可以得到服务器和客户端的时间差。
        3. 服务器的时钟 = 客户端的时钟(变化值)+ 时间差(固定值)
        
        这样客户端就没有必要实时的到服务器端去取时间。

    作者:三月三
    来源:http://www.cnblogs.com/march3/archive/2009/05/14/1456720.html
    说明:
        1. 多浏览器支持
        2. 由于网络延时无法估计的原因,会有一定的误差。
            用户可以通过 set_delay() 方法来减少误差。
    参数:
        s_year, s_month, s_day, s_hour, s_min, s_sec  
        分别为服务器端的 年 月 日 时 分 秒,

        例如:2008,9,19,0,9,0 表示 2008年9月19日 0点9分0秒
    */
    var ServerClock = 
                
    function(s_year,s_month,s_day,s_hour,s_min,s_sec)
    {
        
    //估计从服务器下载网页到达客户端的延时时间,默认为1秒。
        var _delay = 1000;
        
        
    //服务器端的时间
        var serverTime = null;
        
    if(arguments.length == 0)
        {
            
    //没有设置服务器端的时间,按当前时间处理
            serverTime = new Date(); 
            _delay 
    = 0;
        }
        
    else
            serverTime 
    = 
                
    new Date(s_year,s_month-1,s_day,s_hour,s_min,s_sec);

        
    //客户端浏览器的时间
        var clientTime = new Date();
        
    //获取时间差
        var _diff = serverTime.getTime() - clientTime.getTime(); 

        
    //设置从服务器下载网页到达客户端的延时时间,默认为1秒。
        this.set_delay = function(value){_delay=value;};

        
    //获取服务的日期时间
        this.get_ServerTime = function(formatstring)
        {
            clientTime 
    = new Date();
            serverTime.setTime(clientTime.getTime()
    +_diff+_delay);
            
    if(formatstring == null)
                
    return serverTime;
            
    else
                
    return serverTime.format(formatstring);
        };    
    }

    用法:

    <!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>
      
    <title> 在客户端显示服务器时钟Demo </title>
    </head>

    <body>
    <div id="time"></div>
    <script language="javascript" src="ServerClock.js"></script>
    <script language="javascript">
    <!--
    /*
    以下代码中:2008,9,19,0,9,0 为服务器端返回的时间,

    以 ASP.NET代码为例
     var srvClock = new ServerClock(<%=DateTime.Now.ToString("yyyy,M,d,H,m,s") %>);
    */
    var srvClock = new ServerClock(2008,9,19,0,9,0);

    /* 时间格式化字符串 */
    var fmtStr = "服务器的时间是:<br/>yyyy年MM月dd日 HH:mm:ss E<br/>是该年的第D天<br/>是该年的第w周<br/>";

    /* 
    由于网络延时无法估计的原因,会有一定的误差。用户可以通过 set_delay() 方法来减少误差。
    默认为1000,表示 1 秒。 
    */
    srvClock.set_delay(
    3000); /* 时钟向后延时 3 秒 */

    /* 0.5秒刷新一次时间 */
    window.setInterval(
    function(){
        document.getElementById(
    "time").innerHTML = 
                                    srvClock.get_ServerTime(fmtStr);
    },
    500);

    //-->
    </script>
      

     
    </body>
    </html>

    代码下载

     
  • 相关阅读:
    2.2 列表推导和生成器表达式
    1.2 如何使用特殊方法
    Selenium安装方法
    Python中Selenium的使用方法
    BeautifulSoup4的使用方法
    (转)Python中sort和sorted的区别和使用方法
    (转)Python中random模块的几个常用函数
    PR中我的常用快捷键
    二、交互式运行环境——REPL
    一、Node.js概述
  • 原文地址:https://www.cnblogs.com/march3/p/1456720.html
Copyright © 2011-2022 走看看