Я обнаружил, что strtotime ведет себя странно при использовании относительного формата времени.PHP 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 месяца или другое количество месяцев, поэтому «последний день последнего месяца» не совсем нормально)
Начать с определения того, что именно означает «-1 месяц» на 31-й. Это такое очень странное определение, что я никогда не ожидал, что какое-либо программное обеспечение «начнет правильно». – deceze