我想在我的php页面中显示用户个人资料中的最后一次。我使用DATETIME数据类型将用户的注销时间存储在数据库中,如2014-01-06 15:25:08(存储在$last_log
中)。现在我想显示最后看到的x分钟前。它是x天前,x个月前的自动更新。
当我们添加评论&时,我想要像这里一样它的时间“.......以前”更新。 我该如何展示呢。
答案 0 :(得分:7)
// 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";
}
答案 1 :(得分:3)
尝试这样的事情:
$datetime1 = new DateTime('2014-01-06 15:25:08');
$datetime2 = new DateTime();
$interval = $datetime1->diff($datetime2);
echo $interval->format('%a days')."<br>";
echo $interval->m." Months";
答案 2 :(得分:3)
尝试此功能
function get_timeago( $ptime )
{
$etime = time() - $ptime;
if( $etime < 1 )
{
return 'less than '.$etime.' second ago';
}
$a = array( 12 * 30 * 24 * 60 * 60 => 'year',
30 * 24 * 60 * 60 => 'month',
24 * 60 * 60 => 'day',
60 * 60 => 'hour',
60 => 'minute',
1 => 'second'
);
foreach( $a as $secs => $str )
{
$d = $etime / $secs;
if( $d >= 1 )
{
$r = round( $d );
return 'about ' . $r . ' ' . $str . ( $r > 1 ? 's' : '' ) . ' ago';
}
}
}
用法:
$timestamp = strtotime("2014-11-14 17:15:59");
echo get_timeago( $timestamp );
答案 3 :(得分:2)
使用date_diff函数。
请参阅http://php.net/manual/en/function.date-diff.php
“强大的功能,以获得两个日期差异。”
简而言之:
// $datetime1 and $datetime2 are UNIX timestamps.
$interval = date_diff($datetime1, $datetime2);
echo $interval->format($differenceFormat);
答案 4 :(得分:1)
试试这个
$date1 = strtotime('2014-12-06 15:25:08');
$date2 = strtotime(date('Y-m-d H:i:s'));
$seconds_diff = $date2 - $date1;
echo round(abs($seconds_diff) / 60,2). " mins ago";