2012-05-30 313 views
-6

我想在我的網頁上顯示服務器時間。我用JavaScript代碼完成了客戶端時間,但我如何顯示服務器時間?用php顯示時鐘

是什麼zendFramework類做到這一點?

我使用JavaScript代碼下面顯示的客戶端時間:

<head> 
<script language="javascript" type="text/javascript"> 
function startTime() 
{ 
     var today=new Date(); 

     var h=today.getHours(); 
     var m=today.getMinutes(); 
     var s=today.getSeconds(); 

     // add a zero in front of numbers<10 
     m=checkTime(m); 
     s=checkTime(s); 

     document.getElementById("time_section").innerHTML=h+":"+m+":"+s; 
     t=setTimeout('startTime()',500); 

} 

function checkTime(i) 
{ 
     if (i<10) 
     { 
       i="0" + i; 
     } 
     return i; 
} 
</script> 

</head> 

<body onload="startTime()"> 
</body> 
+6

你爲什麼發佈不相關的代碼? :) – Bono

+1

關於Ajax回調 – Gowri

+0

你可以用快速的谷歌搜索回答你自己的問題。 –

回答

7

,以顯示服務器時使用日期函數:

<?php echo date('Y-m-d H:i:s'); ?> 

,如果你的意思是一個實時時鐘,你不能用php做那個,堅持用javascript代替

+0

完美正確,對提問者完全無用,因爲他顯然意味着實時時鐘。 – Amadan

+0

你可以從你的PHP打印時間變量,然後不斷增加它與JS(顯然可能有幾個(毫秒)延遲取決於頁面加載時間),但它是可能的。 (注意OP用JS標記他的問題)。 –

+1

@Amadan不,他顯然不是指實時鐘。他想要服務器時間。這就是爲什麼我說「如果你的意思是一個實時時鐘...」 –

1

用AJAX作爲UNIX時間戳(PHP函數time())詢問服務器的時間。當它到達時,從當地時間戳(var timeDiff = new Date() - serverTime * 1000)獲得差異;修改您的不太相關的代碼,以顯示new Date() + timeDiff而不是new Date()

讓我們嘗試一些代碼:

var timeDiff; 
$.ajax('time.php', {  
    success: function(serverTime) { 
    timeDiff = new Date() - serverTime * 1000; 
    startTime(); 
    } 
}); 

startTimenewDate() + timeDiff取代newDate()。在服務器端,它的簡單,在time.php

header('Content-Type: text-json'); 
echo time(); 

沒有檢查,所以有可能是錯誤。買者自負。

h3nr1x的解決方案也可以工作,但這種方式你不必擔心失去同步。

一個小故障是,客戶端上的時間計算都在當地時區完成;如果您在與服務器不同的時間跨越DST時間,則會影響您,同時顯示的時間不正確。我不知道如何設置JavaScript的Date對象的時區,或者甚至可能。 :(

0

設置服務器時區

date_default_timezone_set('America/Los_Angeles'); 

將顯示17時十六分十八秒

$currentTime = date("H:i:s"); 

看到date_default_timezone_set()date()爲confiruation選項。

3

修改代碼, ,setTimeout函數只會增加th中的時鐘每分鐘電子商務客戶端,然後使用PHP初始化today與服務器時間的javascript變量,像這樣:

// time() returns seconds, multiply by 1000 to get millisenconds 
var today = new Date(<?php echo time() * 1000?>); 

然後javascript的時鐘應該保持在客戶端

可選與服務器時間去,你可以通過每隔一定時間(一小時)做一次ajax請求來與服務器時間同步

0

您可以使用AJAX來實現。有一個PHP頁面,迴應當前時間,並更新它每秒或任何與AJAX。

+0

每秒一個請求?不用了,謝謝。 – Amadan

+1

@Amadan請更有禮貌。每個人都看到問題不同 –