天天看點

jsp中以伺服器時間作為起始,顯示時鐘的小程式

一般的網頁都有這種功能:在頁面上動态顯示目前時間,這個的實作也很簡單,基本上一行代碼就實作了

<span id="curTime"></span>

<script type="text/javascript"><!--

setInterval("curTime.innerHTML=new Date().toLocaleString()+' 星期'+'日一二三四五六'.charAt(new Date().getDay());",1000);

// --></script>

我在做OA的一個考勤程式時,要動态顯示伺服器的時間,讓員工知道目前是否可以下班,而客戶機由于種種原因時間與伺服器并不一緻,是以不能用上面的代碼,改進了一下:

<span id="curTime"></span>

<script type="text/javascript"><!--

// 頁面要開始計時的日期(一般是伺服器日期),比如2010-01-12 11:34:55開始計時

var beginAdd = new Date(2010,0,12,11,34,55);

var beginDate = new Date();

    function ShowTime() {

     var now = new Date();

     var diff = (now - beginDate);

     beginAdd.setMilliseconds(beginAdd.getMilliseconds() + diff);

     beginDate = now;

document.getElementById("curTime").innerHTML = beginAdd.toLocaleString()+' 星期'+'日一二三四五六'.charAt(beginAdd.getDay());

}

    setInterval("ShowTime();",1000);

// --></script>

最後加上一個meizz的格式化函數(略有修正),最終版如下:

<span id="curTime"></span>

<script type="text/javascript"><!--

// 頁面要開始計時的日期(一般是伺服器日期),比如2010-01-12 11:34:55開始計時

var beginAdd = new Date(2010,0,12,11,34,55);

var beginDate = new Date();

    function abc() {

     var now = new Date();

     var diff = (now - beginDate);

     beginAdd.setMilliseconds(beginAdd.getMilliseconds() + diff);

     beginDate = now;

document.getElementById("curTime").innerHTML = beginAdd.format("yyyy年MM月dd日 hh:mm:ss 星期W");

}

    setInterval("abc();",1000);

    Date.prototype.format = function(format) {

     var obj =

     {

     "M+": this.getMonth() + 1, //傳回實際月份

     "d+": this.getDate(), //傳回當月第幾天

     "h+": this.getHours(), //傳回小時

     "m+": this.getMinutes(), //傳回分鐘

     "s+": this.getSeconds(), //傳回秒

     "q+": Math.floor((this.getMonth() + 3) / 3), //傳回第幾個季度

     "S": this.getMilliseconds(), //傳回毫秒

     "w": this.getDay(), //傳回星期幾,0為星期日

     "W": "日一二三四五六".charAt(this.getDay()) //傳回星期幾的中文表示

     }

     // 年的單獨處理

     if (/(y+)/.test(format))

     format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));

     // 其它格式處理

     for (var k in obj) {

     if (new RegExp("(" + k + ")").test(format))

     format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? obj[k] : ("00" + obj[k]).substr(("" + obj[k]).length));

     }

     return format;

    }

// --></script>

繼續閱讀