2015-04-14 66 views
0

我想使用PHP獲取服務器時間,並將其傳遞給一個JavaScript變量。 一旦通過,它會增加。發送php日期到JavaScript並增加它

這裏是我的代碼:

function initTime(date){ 
var today=new Date(date); 
var h=today.getHours(); 
var m=today.getMinutes(); 
var s=today.getSeconds(); 
m = checkTime(m); 
s = checkTime(s); 
document.getElementById('time').innerHTML = h+":"+m+":"+s; 
} 
function checkTime(i) { 
if (i<10) {i = "0" + i}; // add zero in front of numbers < 10 
return i; 
} 

情況: 用戶瀏覽歡迎頁面,服務器時間被髮送和由JavaScript好評。

我想增加它,使它成爲一個時鐘腳本。我不想每秒都使用php獲取服務器時間,因爲它會使用更多的服務器資源。

如何使用javascript增加它?

+0

只是'直接echo'您的服務器時間的值爲您的JavaScript變量。 –

+0

[javascript時鐘與服務器時間]的可能重複(http://stackoverflow.com/questions/7780758/javascript-clock-with-server-time) –

+0

我正確地獲得了服務器時間。我的問題是,我如何增加它?例如,我得到了21點33分01秒,我想在一分鐘後讓它變成21點33分02秒。 –

回答

1

您可以只輸出PHP日期的地方,無論是在一個全局變量,或作爲數據屬性的地方,你可以得到它

<div id="time" data-now="<?php echo time() * 1000; ?>"></div> 

然後

var elem = document.getElementById('time'); 
var timer = setInterval(initTime, 1000); 

function initTime() { 
    var time = +(elem.getAttribute('data-now')), 
    time = time + 1000; // add one second 

    var today = new Date(time), 
     h = today.getHours(), 
     m = today.getMinutes(), 
     s = today.getSeconds(); 

     m = checkTime(m); 
     s = checkTime(s); 

    elem.innerHTML = h + ":" + m + ":" + s; 
    elem.setAttribute('data-now', today.getTime()); 
} 

function checkTime(i) { 
    if (i < 10) { 
     i = "0" + i 
    }; // add zero in front of numbers < 10 
    return i; 
} 

FIDDLE

1

你可以把你的PHP變量的隱藏輸入:

<input id="your_input" value="<?php echo $my_var; ?>">

,並把它在javascript有:

my_var = document.getElementById('your_input').value;

1

兩種方式。首先,使用moment.js

setInterval(function() { 
    document.getElementById('time').innerHTML = moment().format('HH:mm:ss'); 
},1000); 

或使用功能:

function initTime(date){ 
var today=new Date(date); 
var h=today.getHours(); 
var m=today.getMinutes(); 
var s=today.getSeconds(); 
m = checkTime(m); 
s = checkTime(s); 
document.getElementById('time').innerHTML = h+":"+m+":"+s; 
} 
function checkTime(i) { 
if (i<10) {i = "0" + i}; // add zero in front of numbers < 10 
return i; 
} 

setInterval(initTime(date),1000); 
+0

它仍然沒有改變。 –

+0

控制檯記錄什麼? – baao

+0

我正確地獲得了服務器時間。我的問題是,我如何增加它?例如,我得到了21:33:01,我想在一分鐘之後讓它21:33:02 –

1

我發現了另一個question這是同樣的事情後,基本上是這樣。在使用毫秒從PHP初始化的JS日期:

<script type="text/javascript"> 
    var d = new Date(<?php echo time() * 1000 ?>); 
</script> 

這裏是一個jQuery clock plugin,您可以使用,你可以養活一個開始時間(服務器時間)。全部放在一起,它會去是這樣的:

<script type="text/javascript"> 
    var d = new Date(<?php echo time() * 1000 ?>); 
    $("#clock").clock({"timestamp":d.getTime()}); 
</script> 
+1

如果您認爲這些問題是相同的,請將其標記爲重複。 –