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