Я обнаружил, что strtotime ведет себя странно при использовании формата относительного времени.
Предположим, что сегодня 31 марта 2015 года (выполняется путем установки системных часов), когда я использую strtotime('-1 month')
, он возвращает 3 марта 2015 года.
Предположим, что сегодня 31 июля 2015 года, когда я использую strtotime('-1 month')
, он возвращает 1 июля 2015 года, а возвращает 31 июля 2015 года, если сегодня 31 августа 2015 года.
Итак, похоже, что PHP просто вычитает 1 месяц и добавляет дату обратно, если в этом месяце нет 31-го дня (или 30-го и 29-го для февраля). Это ошибка PHP? Или есть причина, по которой PHP делает это как функцию?
И, что наиболее важно, независимо от того, ошибка это или особенность, есть ли способ заставить его всегда возвращать последний день при вычислении времени? (может быть -3 месяца или другое количество месяцев, поэтому «последний день прошлого месяца» не подходит)