Проблемы со временем (возраст публикации)

Сдвиг возраста публикации на час вперед

#1 22 апреля 2015 в 11:48
Здравствуйте. Вопрос по InstantCMS версии 2.х. При переезде с локальной машины на хостинг возникла проблема с отображением возраста публикации — идет сдвиг по времени на час вперед.

Пример:
1. публикуем материал
2. видим "опубликовано 1 час назад"
3. в течении часа видим "опубликовано 59, 58, 57 минут назад… только что"

Серверное время верное, пхп и мускул также отдают верное текущее время. Запись в базу данных также идет верного времени. Но на сайте отображается со сдвигом на час вперед.

Удалось добиться идентичного глюка на локальной машине путем отключения расширения timezonedb. На хостинге данное расширение включено, но версия более ранняя — 2014.9. На локальной машине (где все отображается верно) — 2014.10.

Собственно, вопрос (в первую очередь к разработчикам): существует ли воркэраунд данной проблемы без смены версии расширения? На хостинге еще несколько сайтов на разных движках, где проблем со временем в текущей конфигурации не наблюдается. Не сильно вдохновляет бороться со временем еще и на них (естественно, в случае, если такая проблема возникнет).
#2 28 апреля 2015 в 13:22
Продолжил копание в проблеме. Взял таблицу ленты активности, слабал 2 простеньких скрипта. Запрашиваем дату записи 4596 из таблицы активности (дата — 2015-04-28 11:20:21)

Вариант 1. Запрос даты стандартными средствами пхп.
  1.  
  2. $db = mysql_connect($dbhost, $dblogin, $dbpass);
  3. mysql_select_db($dbname, $db);
  4.  
  5. $sql = 'SELECT date_pub FROM cms_activity WHERE id=4596 ORDER BY date_pub DESC LIMIT 1';
  6. $result = mysql_query($sql, $db) or die(mysql_error());
  7. $row = mysql_fetch_assoc($result);
  8. print_r($row);
  9.  
Результат
  1.  
  2. Array ( [date_pub] => 2015-04-28 11:20:21 )
  3.  
Вариант2. Запрос той же даты используя системный класс cmsDatabase

  1.  
  2. $db = new cmsDatabase();
  3. $row = $db->getRow('activity', 'id=4596', 'date_pub', '');
  4. print_r($row);
  5.  
Результат
  1.  
  2. Array ( [date_pub] => 2015-04-28 12:20:21 )
  3.  
Разница все тот же час.
#3 21 мая 2015 в 16:39
Вопрос разрешился.

Myqsl адекватно воспринимает
  1. SET TIME_ZONE='+3:00'
и неадекватно
  1. SET TIME_ZONE='Europe/Moscow'
Одна строчка в database.php — и вуаля. Хотя обе конструкции должны работать идентично. Скорее всего, использование таймзон как в пхп — явление последнего порядка у среднестатистического пользователя хостинга и никому не было дела до таблиц соответсвия mysql. Естественно, они как при царе горохе и остались. Такие дела.

Тему можно закрывать
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.