我知道这个问题已被多次询问,我发现了很多教程,博客文章关于将时间戳转换为以前在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;
答案 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";
}