Задать вопрос
@efimenko_b

Как получить даты последних пяти дней?

К примеру сегодня 15 Авг
Как получить массив пяти последних дней?, то есть: 11 Авг, 12 Авг, 13 Авг, 14 Авг, 15 Авг
Все бы ничего, вот только как учесть переход в другой месяц?, типа: 31 Июл, 1 Авг
Можно ссылку на какую-то статью или помощь кодом.
  • Вопрос задан
  • 143 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
Creamov
@Creamov
Senior Fullstack Software Engineer
Пример с использованием UnixTimeStamp:

function getLastNDays($days_count = 5) {
	$today = time();
	$last_days = [];

	for ($i = 0; $i < $days_count; $i++) {
	    $prev_day = $today - (3600 * 24 * $i);
	    array_push($last_days, $prev_day);
	}

	return $last_days;
}

// Вывод
$days = array_map(function($item){
	return date('d M', $item);
}, getLastNDays(5));

asort($days);

echo implode(', ', $days); // 11 Aug, 12 Aug, 13 Aug, 14 Aug, 15 Aug

Или вариант с DateTime:

function getLastNDays($days_count = 5) {
	$datetime = new DateTime();
	$last_days = [];

	for ($i = 0; $i < $days_count; $i++) {
	  array_push($last_days, clone $datetime);
		$datetime->sub(new DateInterval('P1D'));
	}

	return $last_days;
}

// Вывод
$days = array_map(function($item){
	return $item->format('d M');
}, getLastNDays(5));

asort($days);

echo implode(', ', $days); // 11 Aug, 12 Aug, 13 Aug, 14 Aug, 15 Aug

В следующий раз приводите примеры своего кода.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы