Хорошо?
Я пытаюсь нажать дату расчета здесь, но я не получаю ..
Что происходит, так это следующее:
$AtualMenos3 = date("mdY", strtotime("2013-03-31 -3 month")); $AtualMenos2 = date("mdY", strtotime("2013-03-31 -2 month")); $AtualMenos1 = date("mdY", strtotime("2013-03-31 -1 month")); $AtualMes = date("mdY", strtotime("2013-03-31"));
Правильно должно быть:
03-31-2013 02-28-2013 01-31-2013 12-31-2012
Тем не менее, этот php вычисляет дату неправильно, потому что, когда месяц февраль (который имеет только 28 дней), расчет идет не так.
Реальный выход:
03-31-2013 03-03-2013 01-31-2013 12-31-2012
Кто-нибудь знает, дайте мне понять, как я это исправить? потому что это сложно .. У меня нет идей … Я ничего не могу придумать: \
$datetime = new DateTime('2013-03-31'); $datetime->modify('-1 month'); echo $datetime->format('Ym-t') . "<br>"; $datetime->modify('-1 month'); echo $datetime->format('Ym-t') . "<br>"; $datetime->modify('-1 month'); echo $datetime->format('Ym-t') . "<br>";
Смотрите это в действии
Обходным путем для поиска последнего дня месяца было бы:
$lastDay = date("mdY",(strtotime('next month',strtotime(date("m-01-Y"))) - 1));
Надеюсь, это поможет.
Если вы хотите придерживаться strtotime()
, вы можете легко вычислить последний день месяца, вычитая один день со следующего месяца.
echo date("mdY", strtotime("Apr 2013 -1 day")); // yields 03-31-2013 echo date("mdY", strtotime("Mar 2013 -1 day")); // yields 02-28-2013 echo date("mdY", strtotime("Feb 2013 -1 day")); // yields 01-31-2013