Задать вопрос
Redfern89
@Redfern89
Пишу код под МК AVR, начинающий сисадмин

PHP как получить порядковый номер дня?

Доброго времени суток! Как можно получить порядковый номер дня в диапазоне дат? getdate может только в пределах одного года. К примеру есть диапазон 10.11.2022 - 21.12.2023. И скажем нужен номер дня в дате 05.04.2023 из всего этого диапазона
  • Вопрос задан
  • 234 просмотра
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 4
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
date_default_timezone_set('Europe/Moscow');
$start = new DateTimeImmutable('10.11.2022');
$target = new DateTimeImmutable('05.04.2023');
$interval = $target->diff($start, true);
print $interval->days + 1;
// 147
Ответ написан
Комментировать
https://www.php.net/manual/en/class.dateinterval.php - создаёте объект интервала с параметром 1 день
https://www.php.net/manual/en/class.dateperiod.php - создаёте объект периода с датой до и после и с помощью метода getRecurrences() получаете кол-во дней
Ответ написан
mahmudchon
@mahmudchon
<?php
$start = '10.11.2022'; // Начало
$today = '05.04.2023'; // дата от начала
$seconds = strtotime($today) - strtotime($start); // секунд прошло с начала
$days = intval( $seconds / ( 24 * 60 * 60 ) ); // дней прошло
$day = $days + 1; // какой день пошел
echo $today . ' - это ' . $day . ' день начиная с ' .  $start;
// 05.04.2023 - это 147 день начиная с 10.11.2022
Ответ написан
$start_date = strtotime('2022-11-10'); // начальная дата
$target_date = strtotime('2023-04-05'); // конечная дата
$diff = ($target_date - $start_date) / (60 * 60 * 24); // Разница в днях 
$day_number = date('z', $target_date) + 1; // порядковый номер дня от начала года +1 потому что с 0
echo "Порядковый номер дня: {$day_number}";
Ответ написан
Ваш ответ на вопрос

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

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