Получить количество дней за предыдущий месяц

#php #date

#php #Дата

Вопрос:

Я использую этот код, чтобы получить количество дней в прошлом месяце, но если текущий месяц — январь (01), он будет использовать 00 месяцев вместо 12.

 $prev_month_days = cal_days_in_month(CAL_GREGORIAN, date('m')-1, date('Y'));
 

Искал в Google 20 минут и не смог найти никакого разумного и краткого решения.

Пожалуйста, помогите. Спасибо.

Комментарии:

1. поэтому проверьте, есть ли date('m') 1 . если да, преобразуйте 1,xxxx в 12,xxxx minus 1

2. date('m') - 1 ?: 12 был бы моим предпочтительным ответом, но есть десятки способов.

Ответ №1:

 <?php 

echo date("t", mktime(0,0,0, date("n") - 1));

?>
 

Комментарии:

1. Элегантный и лаконичный!

Ответ №2:

Пример, приведенный Дэном, неверен.

Вы должны проверить результат date(«n») и исправить возврат за январь

И если это часть функции времени, что кажется логичным, поскольку вы ищете предыдущее количество дней в месяце. Вам также придется компенсировать смещение года назад. В противном случае вы бы перешли к декабрю текущего года.

Что работает лучше, так это..

 $NowYear = date("Y");
$NowMonth = date("n");

if ($NowMonth == 1) {
    $ThenMonth = 12;
    $ThenYear = $NowYear - 1;
}
else {
    $ThenMonth = $NowMonth - 1;
    $ThenYear = $NowYear;
}

$ThenNumberOfDays = date("t", mktime(0, 0, 0, $ThenMonth, 1, $ThenYear));
 

$ThenNumberOfDays будет иметь правильное количество дней…