PHP或JavaScript / jQuery中的未来timeago方法

时间:2014-07-08 15:15:20

标签: javascript php jquery timeago

我正在浏览STO和网络,但是coudn没有为此找到任何东西。

我正在寻找一种方法/功能来打印出可读的未来timeago ,例如:

  • 从现在起3小时内
  • 从现在开始的1年

我将日期中的日期存储到我的表格中的日期时间列中,我需要它来预测发布时剩余的时间等等。

有没有这样的事情已经完成了?如果是的话 - 请帮助。

这是我目前在PHP中的 timeago

(我也有塞尔维亚 - 克罗地亚语 - 波斯尼亚语的这种方法的本地化版本)

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';
        }
    }
}

2 个答案:

答案 0 :(得分:2)

如果我理解你想要的东西,试试这个:

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

答案 1 :(得分:1)

我建议使用http://momentjs.com/。它具有您正在寻找的功能。见http://momentjs.com/docs/#/displaying/from/

示例:

<script>
var my_date = moment('2014-07-07');
$("#date").val(start.from(my_date) + " from now"); // "in 5 days from now"
</script>