Я знаю о нежелательном поведении функции PHP
StrToTime
Например, при добавлении месяца (+1 месяц) к датам типа: 31.01.2011 → 03.03.2011
Я знаю, что это официально не ошибка PHP, и что у этого решения есть некоторые аргументы позади этого, но по крайней мере для меня это поведение вызвало много траты времени (в прошлом и настоящем), и я лично ненавижу его.
То, что я нашел еще более странным, это то, что, например, в:
MySQL: DATE_ADD ('2011-01-31', INTERVAL 1 MONTH) возвращается 2011-02-28 или
С#, где новый DateTime (2011, 01, 31).AddMonths(1); вернется 28.02.2011
wolframalpha.com, предоставляя 31.01.2013 + 1 month
в качестве ввода; вернется в четверг, 28 февраля 2013 г.
Он видит, что другие нашли более достойное решение глупого вопроса, который я видел много в отчетах об ошибках PHP: "В какой день это будет, если я скажу, что мы встречаемся через месяц с сейчас" или что-то в этом роде. Ответ: если 31 не существует в следующем месяце, введите мне последний день этого месяца, но , пожалуйста, придерживайтесь следующего месяца.
Итак, МОЙ ВОПРОС: есть ли функция PHP (написанная кем-то), которая разрешает эту официально признанную ошибку? Поскольку я не думаю, что я единственный, кто хочет другого поведения при добавлении/вычитании месяцев.
Я особенно заинтересован в решениях, которые также работают не только на конец месяца, но и на полной замене strtotime
. Также необходимо также рассмотреть случай strotime +n months
.
Счастливое кодирование!