T1grOK
26.11.2012 - 23:07
Есть проект где задействована функция strtotime. Сегодня выяснилось, что на хостинге в периоде появляется сдвиг. Нашел сдвиг между 04-11-2012 и 05-11-2012
echo strtotime('2012-11-04')-strtotime('2012-11-05');
90000 секунд хотя в сутках 86400 секунд, то есть сдвиг в 1 час. С чем это может быть связано?(может каким то боком с переводом часов или с форматов времени на сервере).
P.S. Гуглю...
_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
Winston
26.11.2012 - 23:54
Хм.. интересно, протестил твой код но перед ним поставил
date_default_timezone_set('America/Chiсago');
В итоге тоже получил 90000
А вот при такой зоне
date_default_timezone_set('Europe/Kiev');
Все как надо
А где сервер размещен?
T1grOK
27.11.2012 - 00:11
timezone только сдвигает этот час. 'Europe/Kiev' - то же самое только в конце октября(в день перевода часов 28 октября 2012)
_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
killer8080
27.11.2012 - 00:28
Цитата (T1grOK @ 26.11.2012 - 23:11) |
timezone только сдвигает этот час. 'Europe/Kiev' - то же самое только в конце октября(в день перевода часов 28 октября 2012) |
Разные страны переводят стрелки в разные дни, в США переход на зимнее время 4-го ноября 2012
пруф линк
Invis1ble
27.11.2012 - 03:10
Проблема в переводе на час, я как раз в тот день напоролся на баг в своем коде из-за этого.
_____________
Профессиональная разработка на заказЯ на GitHub |
второй профиль
T1grOK
27.11.2012 - 23:01
Цитата (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
27.11.2012 - 23:46
Цитата (T1grOK @ 27.11.2012 - 22:01) |
Сегодня опять проверяю тем же кодом, норм 86400.....жесть |
Возможно на сервере изменили настройки временной зоны в php.ini. Указывай временную зону в скрипте чтобы не зависеть от настроек сервера.
T1grOK
28.11.2012 - 10:13
Цитата (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
28.11.2012 - 11:19
Собственно, что рассуждать. Выдержка из мануала
Замечание:
Не рекомендуется использовать эту функцию для математических операций. Целесообразней использовать 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
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.