[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: strtotime непонятки
T1grOK
Есть проект где задействована функция strtotime. Сегодня выяснилось, что на хостинге в периоде появляется сдвиг. Нашел сдвиг между 04-11-2012 и 05-11-2012

echo strtotime('2012-11-04')-strtotime('2012-11-05'); //90000


90000 секунд хотя в сутках 86400 секунд, то есть сдвиг в 1 час. С чем это может быть связано?(может каким то боком с переводом часов или с форматов времени на сервере).

P.S. Гуглю...

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
Winston
Хм.. интересно, протестил твой код но перед ним поставил
date_default_timezone_set('America/Chiсago');

В итоге тоже получил 90000
А вот при такой зоне
date_default_timezone_set('Europe/Kiev');

Все как надо

А где сервер размещен?
T1grOK
timezone только сдвигает этот час. 'Europe/Kiev' - то же самое только в конце октября(в день перевода часов 28 октября 2012)

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
killer8080
Цитата (T1grOK @ 26.11.2012 - 23:11)
timezone только сдвигает этот час. 'Europe/Kiev' - то же самое только в конце октября(в день перевода часов 28 октября 2012)

Разные страны переводят стрелки в разные дни, в США переход на зимнее время 4-го ноября 2012
пруф линк
Invis1ble
Проблема в переводе на час, я как раз в тот день напоролся на баг в своем коде из-за этого.

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

T1grOK
Цитата (Winston @ 26.11.2012 - 19:54)
Хм.. интересно, протестил твой код но перед ним поставил
date_default_timezone_set('America/Chiсago');

В итоге тоже получил 90000

Сегодня опять проверяю тем же кодом, норм 86400.....жесть

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
killer8080
Цитата (T1grOK @ 27.11.2012 - 22:01)
Сегодня опять проверяю тем же кодом, норм 86400.....жесть

Возможно на сервере изменили настройки временной зоны в php.ini. Указывай временную зону в скрипте чтобы не зависеть от настроек сервера.
T1grOK
Цитата (killer8080 @ 27.11.2012 - 19:46)
Цитата (T1grOK @ 27.11.2012 - 22:01)
Сегодня опять проверяю тем же кодом, норм 86400.....жесть

Возможно на сервере изменили настройки временной зоны в php.ini. Указывай временную зону в скрипте чтобы не зависеть от настроек сервера.

Временная зона ничего не дает. Только сдвиг дня, который будет давать 25 часов в сутках. Погуглил всевозможных багов связанных с strtotime море!

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
T1grOK
Собственно, что рассуждать. Выдержка из мануала

Замечание:
Не рекомендуется использовать эту функцию для математических операций. Целесообразней использовать DateTime::add() и DateTime::sub() начиная с PHP 5.3, или DateTime::modify() в PHP 5.2.


_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.