如何在x天前在php中显示时间

时间:2014-12-06 10:24:50

标签: php datetime

我想在我的php页面中显示用户个人资料中的最后一次。我使用DATETIME数据类型将用户的注销时间存储在数据库中,如2014-01-06 15:25:08(存储在$last_log中)。现在我想显示最后看到的x分钟前。它是x天前,x个月前的自动更新。

当我们添加评论&时,我想要像这里一样它的时间“.......以前”更新。 我该如何展示呢。

5 个答案:

答案 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";

更多信息请阅读:http://php.net/manual/en/datetime.diff.php

答案 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";