@midarovrk

Как сократить вывод даты из php скрипта?

Помогите, есть php скрипт:

<?php
if( ! defined( 'DATALIFEENGINE' ) ) {	die( "Hacking attempt!" );	}

function plural($n, $plurals) {
	$plural =
		($n % 10 == 1 && $n % 100 != 11 ? 0 :
		($n % 10 >= 2 && $n % 10 <= 4 &&
		($n % 100 < 10 or $n % 100 >= 20) ? 1 : 2));
	return $plurals[$plural];
}

function relativeTime($dt, $precision = 2) {
	$times = array(
		365*24*60*60    =>  array("год", "года", "лет"),
		30*24*60*60     =>  array("месяц", "месяца", "месяцев"),
		7*24*60*60      =>  array("неделю", "недели", "недель"),
		24*60*60        =>  array("день", "дня", "дней"),
		60*60           =>  array("час", "часа", "часов"),
		60              =>  array("минуту", "минуты", "минут"),
	);

	$diff = time() - $dt;

	if($diff < 60)	$output='меньше минуты';
	else {
		$output = array();
		$exit = 0;

		foreach($times as $period => $name) {

			if($exit >= $precision || ($exit > 0 && $period < 60)) break;
				$result = floor($diff / $period);

				if ($result > 0) {
						if($result == 1) $output[] = plural($result, $name);
						else $output[] = $result . ' ' . plural($result, $name);

						$diff -= $result * $period;
						$exit++;
				} else if ($exit > 0) $exit++;
		}
		if ($precision < 3) $sep = " и "; else $sep = ", ";

		$output = implode($sep, $output);
	}
	return $output;
}

?>


Он выводит на сайте человеко понятные даты.
Например так:
день и 9 часов назад
неделю и день назад
3 недели и 3 дня назад
месяц и неделю назад
2 месяца и 3 недели назад

Как сократить скрипт, что нужно удалить из скрипта, чтобы стало так:
Вместо день и 9 часов назад стало день назад
Вместо неделю и день назад стало неделю назад
Вместо 3 недели и 3 дня назад стало 3 недели назад
Вместо месяц и неделю назад стало месяц назад
Вместо 2 месяца и 3 недели назад стало 2 месяца назад

Не хватает знаний чтобы исправить, как только не пытался.
  • Вопрос задан
  • 79 просмотров
Решения вопроса 1
@midarovrk Автор вопроса
Всё оказалось просто.

Заменить
function relativeTime($dt, $precision = 2) {
На
function relativeTime($dt, $precision = 1) {
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@4iloveg
Full-Stack HTML Developer
В час ночи не хотелось в код всматриваться - сделал регуляркой https://regex101.com/r/xTZaho/1
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы