Форум русской поддержки Joomla!® CMS
10.12.2016, 01:21:21 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

JDate, TimeZone не могу разобраться со временем

 (Прочитано 221 раз)
0 Пользователей и 1 Гость смотрят эту тему.
tm2010
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 33


« : 16.02.2016, 15:25:02 »

Нахожусь в москве, на сервере(локальный виндовый комп)  часы показывают московское время скажем сейчас 14-00 (GMT +3)
в Joomla в настройках сервера устанавливаю Будапешт, полагая что JDate должно показывать 12-00 (GMT+1)
реально вижу JFactory::getDate() дает 10:00
в структуре JDate -timezone_type стоит 3 ( подозреваю что москва, но я нигде это не конфигурировал, вероятно эта информация от OC как то приходит в Joomla )
timezone-UTC
Подскажите как настроить время на GMT+1 , в Joomla в разных версиях довольно путанно об этом сказано
версия Joomla 3
Записан
b2z
Support Team
*****

Репутация: +710/-0
Offline Offline

Пол: Мужской
Сообщений: 7538


Разраблю понемногу


« Ответ #1 : 16.02.2016, 16:11:31 »

Если в JFactory::getDate() не передавать TimeZone, то JDate будет инстанцироваться с GMT:
https://github.com/joomla/joomla-cms/blob/staging/libraries/joomla/date/date.php#L96

Если нужно учитывать временную зону, то лучше для вывода даты использовать JHtml::date().

Учитываем настройку пользователя:
Код
echo JHtml::date();

Учитываем настройку сервера из настроек Joomla:
Код
echo JHtml::date('now', null, false);

https://github.com/joomla/joomla-cms/blob/staging/libraries/cms/html/html.php#L747
Записан
tm2010
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 33


« Ответ #2 : 16.02.2016, 16:39:27 »

Спасибо, ясно
Дату со временем сохраняю в таблицу, вопрос о выводе не стоит
нашел корректную TimeZone
$JDate = JFactory::getDate('now','Europe/Budapest');
ну у меня локально выводит ее все равно по гринвичу, без разницы в час
думаю у меня что-то с локальным сервером
Записан
b2z
Support Team
*****

Репутация: +710/-0
Offline Offline

Пол: Мужской
Сообщений: 7538


Разраблю понемногу


« Ответ #3 : 16.02.2016, 16:40:14 »

Так в базу надо всегда в UTC сохранять. Зачем GMT+1 ?
Записан
tm2010
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 33


« Ответ #4 : 16.02.2016, 17:10:35 »

 Вроде пытаюсь сделать целевой компонент для конкретного города, хотя наверное вы правы
Записан
b2z
Support Team
*****

Репутация: +710/-0
Offline Offline

Пол: Мужской
Сообщений: 7538


Разраблю понемногу


« Ответ #5 : 16.02.2016, 17:31:16 »

Вроде пытаюсь сделать целевой компонент для конкретного города, хотя наверное вы правы
Ну так просто при выводе даты будете использовать offset. А если в базе сохраните +1, то вся логика учёта временной зоны пойдёт прахом. Мало ли потом придётся учитывать.
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet