Как правильно отображать время в Drupal с помощью модуля Date? - PullRequest
3 голосов
/ 21 декабря 2011

При создании нового события на моем сайте в Drupal я устанавливаю дату / время события, которое, как я полагаю, соответствует местному времени.Я ожидал, что для даты / времени в системе будет установлено значение, которое я видел в форме добавления / редактирования, но это не так;для него установлено UTC.

Event Start (add/edit form): 2012-12-20 1:00pm EST
Event Start (database):      2012-12-20 6:00pm UTC

Когда я иду отображать эту дату / время, используя дату (), даже после установки часового пояса по умолчанию на EST («Америка / Торонто»), дата / время все еще показывают 2012-12-20 6:00 вечера.

Проблема не обязательно в drupal, дата / время отображаются в том виде, в котором они хранятся, но я думаю, что проблема может быть в дате/ контроль ввода времени в форме добавления / редактирования ... возможное время, связанное с javascript.


Значения публикуются в том виде, в котором они отображаются: 17:00 отправляется на сервер в виде 3 различных значений:5:00 вечераОни хранятся в базе данных как UTC, но, что бы я ни старался, они всегда отображаются как UTC.Я пробовал format_date, date_default_timezone_set, устанавливая часовой пояс PHP в файле .htaccess ... не повезло: s


Ненавижу делать это вручную, но это работает:

$tz = new DateTimeZone('America/Toronto');  
$offset = $tz->getOffset(new DateTime($start_date));
$start_stamp = strtotime($start_date) + $offset;

1 Ответ

0 голосов
/ 24 июля 2012

Если у вас есть форматер даты (страница конфигурации в / admin / config / региональный / дата-время), вы можете использовать имя машины для его повторного использования:

$date = new DateObject($timestamp);
$value = date_format_date($date, 'my_date_string_format');
...