2011-09-02 51 views
3

可能重複:
How to sync a javascript countdown with server time得到了一個服務器端的時間和客戶端時間之間的差異,並顯示它

我怎樣才能獲得計算服務器端的時間之間的區別和客戶端時間,然後將其顯示在我的視圖中,這是一個PHP頁面。

讓我說清楚一點。我有一個特定的板球比賽開始時間數據存儲在數據庫中。現在,我想在我的視圖(這是一個PHP頁面)中的客戶端瀏覽器中顯示此時間和時間之間的差異。我可以理解,我需要爲此編寫一個JavaScript函數,但是如何從我的PHP代碼中調用此函數,並且我必須在我的視圖中顯示差異。

我對此感到困惑。

回答

2

date.js對於日期計算非常方便,可以解析/顯示各種格式的日期。

0

從javascript發送(新日期())。getTime()到php腳本,並在php中使用time()函數。

$difference = time() - (int)$_GET['clientTime']; 

這應該是準確的,直到客戶端與服務器通信的時間。

1

在php中將您的日期寫入您網頁上的隱藏輸入。以如下格式存儲它:YYYY/MM/DD hh:mm:ss。加載日期由隱藏字段的值傳遞給Date構造函數:

var cricketDateField = document.getElementsById("cricketDateField"); 
var cricketDate = new Date(cricketDateField.value); 

獲取當前的日期只是通過調用Date構造函數不帶參數:

var now = new Date(); 

獲取在毫秒之差減去日期:

var msDiff = cricketDate - now; // difference in milliseconds 

然後,您可以手動解析毫秒,或轉換成日期和提取日期的各部分獲得的區別:

var diff = new Date(msDiff - 62167190400000); // difference as a date 
var years = diff.getYear(); 
var months = diff.getMonth(); 
var days = diff.getDate() - 1; 
var hours = diff.getHours(); 
var minutes = diff.getMinutes(); 
var seconds = diff.getSeconds(); 
var msg = "There are " + years + " years, " + 
         months + " months, " + 
         days + " days, " + 
         hours + " hours, " + 
         minutes + " minutes, and " + 
         seconds + " seconds until the cricket match."; 
document.getElementById("differenceMsg").innerHTML = msg; 
1

我不知道這是否是正確的方法..但你能做的就是

var mytime=new Date(); 
var serverTime = new Date('<?php echo date('Y/m/d H:i:s')?>'); 
var difference = (mytime - serverTime)/1000; 
var url = 'setSessionData.php'; 
$.post(url,'dateDiff='+difference); 

,並在setSessionData只使用值,並設置會話..並表示將細節得到比賽時間

date('Y-m-d H:i:s',strtotime('+ '.$_SESSION['date_difference'].' sec', $matchTime)); 

使用mktime()來計算$匹配時間

相關問題