2014-12-23 42 views
0

這是我收到的時候我加載頁面得到的時間總是過0

enter image description here

代碼在這裏:

echo "<b>Requested:</b><br>".round(abs(date("Y-m-d H:i:s") - date("Y-m-d H:i:s", strtotime($row['timestamp'])))/60,2)." minute(s) ago<br>"; 
echo "<b>Current Time:</b><br>".date("Y-m-d H:i:s")."<br> "; 
echo "<b>Requested Time:</b><br>".date("Y-m-d H:i:s", strtotime($row['timestamp']))."<br> "; 

我的問題是,它總是說有人要求0分鐘之前的圖像顯示它應該在7分鐘前計數。我已經嘗試了上面鏈接中的代碼顯示,我試圖用不同的格式搞亂它,有些給我巨大的數字,所以我來這裏尋求幫助

+1

難道這是從一個MySQL拉數據庫,如果是這樣,列'timestamp'的確切數據類型是什麼? (假設它是TIMESTAMP) – Jhecht

+0

如果它是MySql提取並且數據類型爲date,請確保PHP和MySQL都使用相同的日期格式。 –

回答

1

你正在嘗試做一個字符串的數學,因爲日期函數以您提供的格式創建一個字符串。使用datetime對象爲這個

$previousDate = $row['timestamp']; 
$startdate = new DateTime($previousDate); 
$endDate = new DateTime(); 
$interval = $endDate->diff($startdate); 

$int = $interval->format('%i'); 
echo "<b>Requested:</b><br>" . $int ." minute(s) ago<br>"; 

這假定$row['timestamp']格式爲 'YYYY-MM-DD HH:MM:SS' 了。對於UNIX風格的時間戳,要在結構使用的符號

$previousDate = new DateTime('@' . $row['timestamp']); 
+0

這有效,但唯一的問題是它現在計數的分鐘,但沒有得到小時/天等在那裏相同,而不是1小時17分鐘它應該只是77分鐘前,你知道我的意思嗎? –

+0

查看[php的DateInterval]的文檔(http://php.net/manual/en/dateinterval.format.php)。你可以在format方法中指定你想要的任何字符串。我只是選擇了%我分鐘,因爲這是你的原始代碼。 – Robbert

1

這應該爲你工作:

<?php 

    //$row['timestamp'] = 1419272871; As an example 

    echo "<b>Requested:</b><br>".round(abs(strtotime(date("Y-m-d H:i:s")) - strtotime(date("Y-m-d H:i:s", $row['timestamp'])))/60, 2)." minute(s) ago<br>"; 
    echo "<b>Current Time:</b><br>".date("Y-m-d H:i:s")."<br> "; 
    echo "<b>Requested Time:</b><br>".date("Y-m-d H:i:s", $row['timestamp'])."<br> "; 

?> 

輸出:

Requested: 
1686.53 minute(s) ago 
Current Time: 
2014-12-23 23:34:23 
Requested Time: 
2014-12-22 19:27:51