PHP | Рассчитать оставшиеся дни, но с учетом високосных лет - PullRequest
2 голосов
/ 28 января 2020

небольшая задача для расчета оставшихся дней месяца, начиная с сегодняшнего дня, просто я пишу:

$today = date('Y/m/d');

$timestamp = strtotime($today);

$daysRemaining = (int)date('t', $timestamp) - (int)date('j', $timestamp);

echo $daysRemaining;

, и я получаю оставшиеся дни

, чтобы сделать тест, я вошел в состояние c дата февраля месяца

$timestamp = strtotime('2020-02-01');

$daysRemaining = (int)date('t', $timestamp) - (int)date('j', $timestamp);

echo $daysRemaining;

вопрос здесь в том, как рассчитать оставшиеся дни месяца с учетом високосных годов, например, в феврале 2020 года будет 29 дней, и таким образом Я выхожу из этого, которые остаются 28

1 Ответ

3 голосов
/ 28 января 2020

Прекратите использовать функции и начните использовать класс DateTime !!! Этот код должен объяснить сам.

<?php

$x = new DateTime('2020-02-17');         // create your date
$y = clone $x;                           // copy the date
$y->modify('last day of this month');    // alter the copy to the last day

echo $x->format('d') . "\n";             // show the day of the first date
echo $y->format('d') . "\n";             // show the day of the second date
echo $y->format('d') - $x->format('d');  // show the difference between the two

Вывод:

17 
29 
12

Проверьте это здесь https://3v4l.org/8ZhOb

Проверьте документы класса DateTime здесь https://www.php.net/manual/en/class.datetime.php

...