Метод будущего времени в PHP или JavaScript/jQuery

Я просматривал STO и сеть для этого, но ничего не нашел для этого.

Я ищу метод / функцию для распечатки читаемого будущего времени, например:

  • Через 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';
        }
    }
}

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

Я бы порекомендовал использовать http://momentjs.com/. Он имеет ту функциональность, которую вы ищете. Смотрите http://momentjs.com/docs/

Пример:

<script>
var my_date = moment('2014-07-07');
$("#date").val(start.from(my_date) + " from now"); // "in 5 days from now"
</script>
Другие вопросы по тегам