entermix: фраза first day of next month переводится как "первый день следующего месяца. При выполнении скрипта ты используешь модификатор %e, который заменяется на порядковый номер первого дня следующего месяца, то есть 1.
Александр Рябов: да, но мы ведь получаем номер следующего месяца, а не дня, т.е. получаем timestamp первого дня следующего месяца, а затем номер месяца, которому принадлежит этот timestamp: (strftime('%e, strtotime('first day of next month')))
entermix: Потому что у этой функции ноги из ОС растут. В винде, например, вообще %e отстутствует https://msdn.microsoft.com/en-us/library/fe06s4ak.aspx
В маке с пробелом, в линуксах - по разному.
Обходите тримом, использованием date, или DateTime::format() или еще чем-нибудь. Или ковыряйте локаль, изменяя поведение операционной системы о_О.
entermix: если у вас что-то не получается, попробуйте прочесть инструкцию.
%m Двухзначный порядковый номер месяца От 01 (январь) до 12 (декабрь)
%e День месяца, с ведущим пробелом, если он состоит из одной цифры. На Windows реализован не так, как описано. Подробнее смотрите ниже. От 1 до 31