2011-04-18 52 views
5

我目前使用PHP提供的日期函數在我的網頁上顯示日期/時間。 但是,使用此功能時,只有在重新加載頁面時纔會更新日期/時間。我希望每秒更新日期/時間。顯示實時

我假設我必須使用JavaScript或jQuery/ajax這個,但我不知道如何做到這一點。我希望這裏的任何人都能給我一些建議。

在此先感謝。

+2

在JavaScript中使用日期()對象的日期。 – 2011-04-18 14:32:38

+0

你想顯示用戶在他們的機器上的時間(爲什麼他們不看他們的任務欄?)或者你想顯示在你的服務器上的時間?或者,也許你想顯示他們所在的時區的確切時間? – Cups 2011-04-18 14:33:15

回答

5

這就是我使用(使用jQuery)

var updateClock = function() { 
    function pad(n) { 
     return (n < 10) ? '0' + n : n; 
    } 

    var now = new Date(); 
    var s = pad(now.getUTCHours()) + ':' + 
      pad(now.getUTCMinutes()) + ':' + 
      pad(now.getUTCSeconds()); 

    $('#clock').html(s); 

    var delay = 1000 - (now % 1000); 
    setTimeout(updateClock, delay); 
}; 

這比僅僅有一個1000ms的計時器,因爲否則你在時序得到漂移更準確。

+0

工作就像一個魅力!謝謝! – Zilarion 2011-04-19 15:01:03

0

jQuery的AJAX

setTimeout(function(){ 
    $.ajax({ 
     url: "server.php", 
     type:"post", 
     success: function(data){ 
     $('#showtime').html(data); 

     } 
    }); 
),1000}); 

server.php

更新查詢 //在這裏迴響在方便的格式

HTML

<div id="showtime"></div> 

裁判 日期/時間http://api.jquery.com/jQuery.ajax/

+0

我明白了,這是一個每秒鐘都會調用的函數..但是,我該怎麼做呢? – Zilarion 2011-04-18 14:34:12

+0

對不起,我錯過了settimeout函數現在我更新了 – Gowri 2011-04-18 14:37:02

1

你是想看客戶的時間還是服務器的時間?您可以查看javascript以在您的網頁上運行時鐘,但它只會顯示用戶的計算機時間。 PHP將顯示服務器的時鐘。

http://www.elated.com/res/File/articles/development/javascript/creating-a-javascript-clock/clock.html

還是jQuery插件:http://plugins.jquery.com/project/jqClock

+0

是的,它必須顯示服務器的時間(因爲這是接收消息時顯示的時間)。所以爲此我需要PHP。 – Zilarion 2011-04-18 14:36:14

0

您將需要使用JavaScript/jQuery的。

我不會建議使用Ajax和調用Web服務器來加載時間,因爲這將是每個用戶每秒都有一個HTTP請求,這是一個很大的流量。

一種在Javascript做教程是在這裏: http://www.elated.com/articles/creating-a-javascript-clock/

(搜索谷歌 「的JavaScript」 時鐘,有很多例子)。

0

一種方法可以給你服務器時間,但不用每秒輪詢一次就是將時間戳傳遞給javascript(不是格式化的時間),然後讓javascript將其轉換爲格式化日期並使用setTimeout添加1秒到郵票,你只需要每秒格式化新的時間戳。這給你的服務器時間,但沒有昂貴的投票。

1

我suget你使用JavaScript oblect用於實時顯示日期/時間

function Timer() { 
    var dt=new Date() 
    document.getElementById('time').innerHTML=dt.getHours()+":"+dt.getMinutes()+":"+dt.getSeconds(); 
    setTimeout("Timer()",1000); 
} 
Timer();