获得时间总是0

时间:2014-12-23 22:27:32

标签: php date time timestamp datediff

这是我在加载页面时得到的内容

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分钟前并计数。我已经尝试了上面的链接中的代码显示我已经尝试用不同的格式弄乱它,有些给了我很大的数字所以我来这里寻求帮助

2 个答案:

答案 0 :(得分:1)

您正在尝试使用字符串进行数学运算,因为date函数会以您提供的格式创建一个字符串。使用此日期时间对象

$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']的格式为&#39; YYYY-mm-dd HH:mm:ss&#39;已经。对于unix样式时间戳,您希望在构造中使用&符号

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

答案 1 :(得分: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