Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Странное поведение strtotime 
:(
    Опции темы
capitan
Дата 29.3.2010, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 602
Регистрация: 27.2.2005
Где: Москва

Репутация: 9
Всего: 13



собственно сегодня вылез странный глюк с данной функцией. Если СЕГОДНЯ запустить код:
Код

    $prev_month = (float)date("m", strtotime("-1 month"));
    $prev_month2 = (float)date("m", strtotime("-2 month"));
    $now_month = (float)date("m");
    
    echo $prev_month.'=>'.$prev_month2.'=>'.$now_month; // 3=>1=>3

Хотя должно быть: 2=>1=>3
Что за ерунда?
PM MAIL WWW ICQ   Вверх
skyboy
Дата 29.3.2010, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



наверное, потому что 29 февраля в этом году не было.

Добавлено через 1 минуту и 2 секунды
с одной стороны - неприятно, да.
но, с другой стороны - ничего не мешает от $now_month отнять 1 или 2 в явном виде.
PM MAIL   Вверх
capitan
Дата 29.3.2010, 13:20 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 602
Регистрация: 27.2.2005
Где: Москва

Репутация: 9
Всего: 13



Это баг PHP. http://www.webmasterworld.com/php/3141352.htm
Фикс такой:
Код

$prev_month = (float)date("m", strtotime( "-1 month", mktime( 12, 0, 0, date("m"), 15, date("Y") ) ));     


Да уж. Придется занести в закладки.

Цитата

но, с другой стороны - ничего не мешает от $now_month отнять 1 или 2 в явном виде. 


Нельзя. Если от января отнять 1 получится 0, а не 12.

Это сообщение отредактировал(а) capitan - 29.3.2010, 13:39
PM MAIL WWW ICQ   Вверх
Fortop
Дата 29.3.2010, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Цитата(capitan @  29.3.2010,  12:20 Найти цитируемый пост)
Это баг PHP.

Ну и зачем врать?
http://bugs.php.net/bug.php?id=44073
Цитата([email protected])

and it's NOT a bug


Добавлено через 4 минуты и 8 секунд
Код

    $ds = mktime(0,0,0,03,29,2010);
    $prev_month = date("Y-m-d", strtotime("last day of -1 month", $ds));
    $prev_month2 = date("Y-m-d", strtotime("last day of -2 month", $ds));
    $now_month = date("Y-m-d", $ds);
    echo $prev_month.'=>'.$prev_month2.'=>'.$now_month . '<br>'; // 2010-02-28=>2010-01-31=>2010-03-29




--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
skyboy
Дата 29.3.2010, 14:12 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(Fortop @  29.3.2010,  12:35 Найти цитируемый пост)
Ну и зачем врать?

а зачем наезжать? captian ориентируется на то, что нашел в своих поисках по сети.
за информацию спасибо.
PM MAIL   Вверх
Fortop
Дата 29.3.2010, 14:16 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Цитата(skyboy @  29.3.2010,  14:12 Найти цитируемый пост)
а зачем наезжать? captian ориентируется на то, что нашел в своих поисках по сети.

А смысл искать сразу у черта на куличках, а не в официальном? Чтобы оправдать себя и запутать других?

Добавлено через 4 минуты и 45 секунд
Более того, по ссылке самого же capitan - четко говорится что это НЕ баг.
И попутно есть отправка на мануал GNU
http://www.gnu.org/software/tar/manual/htm...te-strings.html



--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0497 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.