PHP strtotime +1 месяц поведение

Я знаю о нежелательном поведении Функция 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 месяцев .

Удачного кодирования!

18
задан Valentin Despa 19 August 2013 в 10:07
поделиться