PHP timeAgo返回X天,如果时间戳是将来的

时间:2017-01-26 16:27:09

标签: php time timeago

我有这个PHP函数从时间戳返回 timeAgo

function time_ago($time) {
    $periods = array('second', 'minute', 'hour', 'day', 'week', 'month', 'year', 'decade');
    $lengths = array('60', '60', '24', '7', '4.35', '12', '10');
    $now = time();
    $difference     = $now - $time;
    for ($j = 0; $difference >= $lengths[$j] && $j < count($lengths)-1; $j++) {
        $difference /= $lengths[$j];
    }
    $difference = round($difference);
    if ($difference != 1) {
        $periods[$j] .= 's';
    }
    return $difference . ' ' . $periods[$j] . ' ago';
}

现在,如果时间戳大于现在,它将返回&#34; 47年前&#34;。

如何让它返回&#34; 在3天,5小时,16分钟&#34;如果时间戳大于现在

感谢。

1 个答案:

答案 0 :(得分:1)

Service

这可能有用。虽然我没有看到添加不同时段的循环,但只是第一场比赛。即便如此,你可能忘记在比赛结束后打破循环。

编辑:您可能最好使用DateTime :: diff函数,它与&#34;格式&#34;混合使用。函数可以更准确,更有效地自动化这个过程(因为你的循环是不完整的,它只处理数组中的最后一次迭代)

http://php.net/manual/en/datetime.diff.php