类似stackoverflow的PHP timeago函数

类似stackoverflow的PHP timeago函数,php,datetime,Php,Datetime,我有此函数用于从unix时间戳显示时间: function Timesince($original) { $original = strtotime($original); // array of time period chunks $chunks = array( array(60 * 60 * 24 * 365 , 'year'), array(60 * 60 * 24 * 30 , 'month'), array(60 * 60 * 24

我有此函数用于从unix时间戳显示时间:

function Timesince($original) {
    $original = strtotime($original);
    // array of time period chunks
    $chunks = array(
    array(60 * 60 * 24 * 365 , 'year'),
    array(60 * 60 * 24 * 30 , 'month'),
    array(60 * 60 * 24 * 7, 'week'),
    array(60 * 60 * 24 , 'day'),
    array(60 * 60 , 'hour'),
    array(60 , 'min'),
    array(1 , 'sec'),
    );

    $today = time(); /* Current unix time  */
    $since = $today - $original;

    // $j saves performing the count function each time around the loop
    for ($i = 0, $j = count($chunks); $i < $j; $i++) {

    $seconds = $chunks[$i][0];
    $name = $chunks[$i][1];

    // finding the biggest chunk (if the chunk fits, break)
    if (($count = floor($since / $seconds)) != 0) {
        break;
    }
    }

    $print = ($count == 1) ? '1 '.$name : "$count {$name}s";

    if ($i + 1 < $j) {
    // now getting the second item
    $seconds2 = $chunks[$i + 1][0];
    $name2 = $chunks[$i + 1][1];

    // add second item if its greater than 0
    if (($count2 = floor(($since - ($seconds * $count)) / $seconds2)) != 0) {
        $print .= ($count2 == 1) ? ', 1 '.$name2 : " $count2 {$name2}s";
    }
    }
    return $print;
}
这对我有用。但我只需要打印3天的timeago,3天后需要显示正常日期,如:2015年1月1日。实际上,stackoverflow使用此方法工作


如何创建此项?

步骤1:计算差异

$date1 = new DateTime("2007-03-24");
$date2 = new DateTime("2009-06-26");
$interval = $date1->diff($date2);
//echo "difference " . $interval->y . " years, " . $interval->m." months, //".$interval->d." days "; 
步骤2:

使用if条件来炫耀你的约会

if($interval->d > 3 || $interval->m >0 || $interval->y >0 ){
// echo out your date in your required format
}
多亏了
将此用作想法和方法……

如果差值为1个月,则$interval->d将返回0