我正在为此浏览STO和Web,但是找不到任何东西。

我正在寻找一种方法/函数来打印出可读的将来时间,例如:


从现在起的3小时内
从现在起1年内


我将将来的日期存储到表的datetime列中,我需要它来预测发布时还剩下多少时间,等等。

已经做过这样的事情吗?如果是这样-请帮助。

这是我当前在PHP中的时机:

(对于塞尔维亚-克罗地亚语-波斯尼亚语,我也有此方法的本地化版本)

public static function time_elapsed($ptime) {
    $etime = time() - $ptime;

    if ($etime < 1) {
        return '0 seconds';
    }

    $a = array(12 * 30 * 24 * 60 * 60 => 'year',
        30 * 24 * 60 * 60 => 'month',
        24 * 60 * 60 => 'day',
        60 * 60 => 'hour',
        60 => 'min',
        1 => 'sec'
    );

    foreach ($a as $secs => $str) {
        $d = $etime / $secs;
        if ($d >= 1) {
            $r = round($d);
            return $r . ' ' . $str . ($r > 1 ? 's' : '') . ' ago';
        }
    }
}

最佳答案

如果我正确理解您想要的内容,请尝试以下操作:

function time_elapsed($ptime) {
    $etime = $ptime - time();

    if ($etime < 1) {
        return '0 seconds';
    }

    $a = array(12 * 30 * 24 * 60 * 60 => 'year',
        30 * 24 * 60 * 60 => 'month',
        24 * 60 * 60 => 'day',
        60 * 60 => 'hour',
        60 => 'min',
        1 => 'sec'
    );

    foreach ($a as $secs => $text) {
        $d = $etime / $secs;
        if ($d >= 1) {
            $r = round($d);
            return "In " . $r . ' ' . $text . ($r > 1 ? 's' : '') . ' from now';
        }
    }
}

$time_elapsed = time_elapsed(time() + 36000); // prints In 10 hours from now
var_dump($time_elapsed);

08-25 19:37