как я могу использовать часовой пояс в фильтре даты Twig?

Я использую Twig и этот фильтр даты

http://www.twig-project.org/doc/templates.html#date

По-видимому, они ищут экземпляры DateTime в параметре.

глядя на это http://www.php.net/manual/en/datetime.construct.php

Мне трудно понять объект php datetime и как использовать часовой пояс.

Учитывая, что я знаю базовый PHP и знаком с простым веб-программированием, как его использовать для отображения даты и времени с использованием фильтра даты Twig во время обслуживания часового пояса?

Если есть более простой способ сделать это, используя фильтр даты, но НЕ используя объект datetime, я буду открыт для него.

Меня беспокоит только то, что решение работает, а не «правильность» или «элегантность» решения.

Related of "как я могу использовать часовой пояс в фильтре даты Twig?"

Я думаю, что вы, возможно, неправильно прочитали документацию.

Фильтр даты принимает любой формат даты, поддерживаемый экземплярами DateTime и DateTime.

Это означает, что вы можете просто передать такие вещи, как « 2011-01-20 12:00:00 » или реальный объект DateTime.

Но вам не нужно иметь дело с объектом, если вы этого не хотите.

Теперь, если вам нужна эта строка, которая будет отображаться в определенном часовом поясе, я бы установил этот часовой пояс в php, прежде чем передавать его на веточку

 $x = new DateTime("2010-01-01 12:00:00"); $x->setTimezone(new DateTimeZone("The Timezone you need")); // pass to twig 

Фильтр «Дата» Twig принимает второй параметр: «часовой пояс».

Таким образом, вы можете легко отобразить весь часовой пояс, который вы хотите. Например:

 {{ "now"|date("m/d/YH:i", "Europe/Paris") }} {{ "now"|date("m/d/YH:i", "Asia/Calcutta") }} {{ "now"|date("m/d/YH:i", "Europe/Berlin") }} 

Для получения дополнительной информации: http://twig.sensiolabs.org/doc/filters/date.html#timezone

В сегодняшней версии он поддерживается в файле конфигурации symfony:

 twig: date: timezone: Asia/Tokyo 

http://symfony.com/blog/new-in-symfony-2-7-default-date-and-number-format-configuration

код, который работает для меня, был

 /** originally the $post['created'] contains the value stored in database. this value was inserted assuming UTC format. Best to do something like date_default_timezone_set('UTC'); which sets UTC application-wide **/ $time = new DateTime($post['created']); $time->setTimezone(new DateTimeZone('Asia/Singapore')); // if you want Asia/Singapore // probably the DateTimeZone has to be retrieved from database // since it could be user setting // you can find the list of legit DateTimeZones in // http://www.php.net/manual/en/timezones.php $post['created'] = $time; /** Then $post is passed to Twig **/