Это происходит только на 31-м
echo date('F',strtotime('this month')); //May echo date('F',strtotime('next month'));//July echo date('F',strtotime('+1 month'));//July
Насколько я понимаю, июнь приходит после мая. Но я предполагаю, что php ленится только через 31 день, пропуская целый месяц.
Как я могу безопасно получить следующий месяц независимо от длины? В идеале использование strttotime
edit Забыл упомянуть, почему я надеялся использовать strtotime, так это то, что я использую окно поиска для поиска событий, интерпретирующих вход пользователя strtotime
Вероятнее всего, самый надежный способ:
date('F', mktime(0, 0, 0, date('n') + 1, 1))
Вы также можете использовать:
echo date('Ym-d', strtotime("first day of -1 month"));
Это из-за переполнения даты в том, как PHP обрабатывает дату. Это просто увеличивает месяц на 1. Не существует 31 июня, поэтому он разрешает его, добавляя день, на который затем помещается его в июле. Попробуйте преобразовать его в первый месяц, а затем увеличивать месяц.
Это ошибка, но из-за того, как она есть и как долго она там была отмечена как wontfix. https://bugs.php.net/bug.php?id=66988