在PHP中将时间戳转换为时间?

时间:2014-10-06 21:54:30

标签: php

我知道这个问题已被多次询问,我发现了很多教程,博客文章关于将时间戳转换为以前在php中的时间..

我尝试了无数代码,似乎没有什么能帮助我......

我要么得到一个没有错误的空白页面(我在我的php页面上重新发布错误),或者我的页面中有一些奇怪的数字..

所以我觉得有人可以为我揭开这个......

基本上我这样保存日期:

$date = date('Y-m-d H:i:s');

我只是将它保存在mysql数据库中......

我这样回应:

 echo $date;

所以现在我需要知道的是如何转换echo $ date;每次页面关闭并重新打开时,如1分钟前,10分钟前,1小时前等等?

我确实尝试过很多功能,我在谷歌和中午似乎都做了什么!

有人可以就此问题提出建议吗?

由于

编辑:

我使用了答案中所述的代码,但我仍然得到$ date echo-ed与数据库中存储的完全相同的格式:2014-10-06 22:54:54

$date = date('Y-m-d H:i:s');

$time1 = new DateTime($date);
$now = new DateTime();
$interval = $time1->diff($now);


if ($interval->y) $date = $interval->y . ' years';
elseif ($interval->m) $date = $interval->m . ' months';
elseif ($interval->d) $date = $interval->d . ' days';
elseif ($interval->h) $date = $interval->h . ' hours';
elseif ($interval->i) $date = $interval->i . ' minutes';


echo $date;

2 个答案:

答案 0 :(得分:0)

您应该使用DateTime类来获得2次之间的差异,即;

$time1 = new DateTime('2014-10-06 09:00:59');
$now = new DateTime();
$interval = $time1->diff($now,true);

然后使用该差异(这是一个DateInterval对象$interval)来找到这样的最小时差;

if ($interval->y) echo $interval->y . ' years';
elseif ($interval->m) echo $interval->m . ' months';
elseif ($interval->d) echo $interval->d . ' days';
elseif ($interval->h) echo $interval->h . ' hours';
elseif ($interval->i) echo $interval->i . ' minutes';
else echo "less than 1 minute";

应该回应(在撰写本文时)13 hours

希望这有帮助。

答案 1 :(得分:0)

检查此函数intval() - http://php.net/manual/en/function.intval.php 以下代码可以帮助您

$seconds_ago = (time() - strtotime('2014-01-06 15:25:08'));

if ($seconds_ago >= 31536000) {
    echo "Seen " . intval($seconds_ago / 31536000) . " years ago";
} elseif ($seconds_ago >= 2419200) {
    echo "Seen " . intval($seconds_ago / 2419200) . " months ago";
} elseif ($seconds_ago >= 86400) {
    echo "Seen " . intval($seconds_ago / 86400) . " days ago";
} elseif ($seconds_ago >= 3600) {
    echo "Seen " . intval($seconds_ago / 3600) . " hours ago";
} elseif ($seconds_ago >= 60) {
    echo "Seen " . intval($seconds_ago / 60) . " minutes ago";
} else {
    echo "Seen less than a minute ago";
}