Я использую функции date()
и strtotime()
для отображения следующих трех месяцев в выпадающем списке.PHP date() и strtotime() возвращают неправильные месяцы 31-го числа
PHP код:
echo date("m/Y",strtotime("+0 months"));
echo date("m/Y",strtotime("+1 months"));
echo date("m/Y",strtotime("+2 months"));
Однако, если скрипт выполняется, когда дата-сервер на 30 или 31, в следующем месяце, который Feburary, будет отображаться в марте вместо этого. т.е. выше скрипт должен возвращать
01/2012
02/2012
03/2012
Но, вместо того, что он на самом деле показывает
01/2012
03/2012
03/2012
это потому, что Feburary не тридцатого или тридцать первого, так что скрипт переводит «31/02 "в" 01/03 ".
Я прочитал страницу strtotime()
на php.net, эта проблема была поднята, но полезных решений не было. Так может ли кто-нибудь помочь мне найти простой способ решить эту проблему? Заранее спасибо!
возможно дубликат [StrToTime возвращает неправильный штамп времени для '-1 месяц'] (http://stackoverflow.com/questions/5481949/strtotime-returns-incorrect-timestamp-for -1-month) и [PHP Strtotime -1month -2month] (http://stackoverflow.com/questions/1211824/php-strtotime-1month-2month) и [Сколько дней составляет 1 месяц в PHP?] (Http : //stackoverflow.com/questions/5464221/how-many-days-does-1-month-represent-in-php) и [strtotime "в следующем месяце" не действует, как ожидалось (сегодня это)] (http://stackoverflow.com/questions/6182925/strtotime-next-month-not-acting-as-expected-today-that-is) – animuson