2017-02-26 38 views
1

我有一個PHP腳本,以HH:MM:SS格式收集數據庫中的時間戳。然後我有一個每秒通過AJAX刷新的PHP頁面,其目標是生成一個腳本,每秒鐘都會提取PHP數據,因此我可以執行諸如顯示倒數計時器之類的操作。我試圖以這種格式顯示兩次差異:HH:MM:SS。 IE:兩次回聲差異

產地:

19:29:34 

(和我的AJAX腳本正確計數,顯示爲時鐘

$gametimestamp = date("H:i:s", strtotime($gametime)); 

生產:

19:19:12 

通過從我的數據庫中拉出時間戳,存儲在$ gam中ETIME。

我想要做的就是像倒數計時器一樣,實時地回顯這兩個區別,假設ajax每秒都會刷新頁面,就好像它正在做的那樣。

$difference = ($currentstampedtime - $gametimestamp); 

什麼都不做。當我呼應VAR,

echo $difference; 

我得到

1 

沒有什麼我都試過工作。請幫忙。提前致謝。

+1

'strtotime(「now」)''可以是'time()'減去時間戳,而不是字符串。例如'strtotime($ gametime)'和'time()'。差異將以秒爲單位。 – chris85

回答

1

你可以使用PHP DateTime對象來創建你的當前時間和目標時間。然後,使用DateTime對象的diff()函數獲取差異並將其格式設置爲「00:00:00」。

即:

$now = new DateTime(); 
$target = DateTime::createFromFormat('H:i:s', "01:30:00"); 
$difference = $now->diff($target); 
echo $difference->format("%H:%I:%S"); 

輸出:

○點57分48秒

希望它能幫助。

+0

這是迄今爲止最簡單和最優雅的解決方案。謝謝。 – Dustin

+0

如果我現在想採取這個: echo $ difference-> format(「%H:%I:%S」); 並創建一個倒數計時器正在使用設定的時間,即:30秒,我該怎麼做? – Dustin

+0

我不知道我明白。你的意思是你想知道從'$ now'到'$ target'有多少秒? – JazZ

0

這裏是你的答案:

<?php  
    $difference = time()-strtotime($gametime); 
    // You can retrieve the difference as time 
    echo $currentstampedtime = date("H:i:s", $difference); 
?> 

UPDATE

另一種解決方案

<?php 
    function get_time_difference($time1, $time2) { 
     $time1 = strtotime("1980-01-01 $time1"); 
     $time2 = strtotime("1980-01-01 $time2"); 
     if ($time2 < $time1) { 
      $time2 += 86400; 
     } 
     return date("H:i:s", strtotime("1980-01-01 00:00:00") + ($time2 - $time1)); 
    } 
    echo get_time_difference("10:25:30", "22:40:59"); // 12:15:29 
?>