#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 будет иметь правильное количество дней…