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


How to display time in x days ago in php

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

当我们添加评论及其时间时,我想要和这里一样"......前"更新。我怎么能显示这个。

// 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";
}

尝试这样的事情:

$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

试试这个函数

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 );

试试这个

$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";

使用 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);