@efimenko_b

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

К примеру сегодня 15 Авг
Как получить массив пяти последних дней?, то есть: 11 Авг, 12 Авг, 13 Авг, 14 Авг, 15 Авг
Все бы ничего, вот только как учесть переход в другой месяц?, типа: 31 Июл, 1 Авг
Можно ссылку на какую-то статью или помощь кодом.
  • Вопрос задан
  • 142 просмотра
Решения вопроса 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

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

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
от 300 000 до 500 000 ₽
06 мая 2024, в 15:37
50000 руб./за проект
06 мая 2024, в 14:54
1000 руб./за проект
06 мая 2024, в 14:53
45000 руб./за проект