Я немного не уверен, почему это не может найти последний день предыдущего месяца. Кажется, что все шаги работают правильно, за исключением случаев, когда создается окончательная дата.
<?php
$currentMonth = date('n');
$currentYear = date('Y');
if($currentMonth == 1) {
$lastMonth = 12;
$lastYear = $currentYear - 1;
}
else {
$lastMonth = $currentMonth -1;
$lastYear = $currentYear;
}
if($lastMonth < 10) {
$lastMonth = '0' . $lastMonth;
}
$lastDayOfMonth = date('t', $lastMonth);
$lastDateOfPreviousMonth = $lastYear . '-' . $lastMonth . '-' . $lastDayOfMonth;
$newLastDateOfMonth = date('F j, Y', strtotime($lastDateOfPreviousMonth));
?>
$lastDateOfPreviousMonth
возвращает 2012-09-30, как и ожидалось; однако после попытки конвертировать его до 30 сентября 2012 года - $newLastDateOfMonth
возвращается 1 октября 2012 года. Где я, кажется, ошибаюсь?
EDIT: Если использовать date("t/m/Y", strtotime("last month"));
или date('Y-m-d', strtotime('last day of previous month'));
, то любой из них по-прежнему будет жизнеспособен с учетом 2013-01-01, то есть они будут учитывать изменение года?