Метод будущего времени в 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>