我如何在Twig日期过滤器中使用时区?

Kim*_*cks 4 php timezone datetime datetime-format twig

我正在使用Twig和这个日期过滤器

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

显然,他们正在寻找参数中的DateTime实例.

看看这个 http://www.php.net/manual/en/datetime.construct.php

我无法理解php datetime对象以及如何使用时区.

鉴于我了解基本的PHP并且熟悉简单的Web编程,如何使用Twig日期过滤器来显示日期和时间,同时满足时区需求?

如果在使用日期过滤器时有更简单的方法,但不使用datetime对象,我会对它开放.

我只关心解决方案是否有效,而不是解决方案的"正确性"或"优雅".

Sci*_*012 19

Twig的"Date"过滤器接受第二个参数:"timezone".

因此,您可以轻松显示所需的所有时区.例如:

{{ "now"|date("m/d/Y H:i", "Europe/Paris") }}
{{ "now"|date("m/d/Y H:i", "Asia/Calcutta") }}
{{ "now"|date("m/d/Y H:i", "Europe/Berlin") }}
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请访问:http: //twig.sensiolabs.org/doc/filters/date.html#timezone


千木郷*_*千木郷 7

在今天的版本中,它已在 symfony 应用程序配置文件中得到支持:

twig:
    date:
        timezone: Asia/Tokyo
Run Code Online (Sandbox Code Playgroud)

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

  • 不过,这将在全球范围内设置时区。 (2认同)

edo*_*ian 3

我认为您可能误读了文档。

日期过滤器接受 DateTime 和 DateTime 实例支持的任何日期格式。

这意味着您可以只传递“ 2011-01-20 12:00:00真正的 DateTime 对象之类的内容。

但如果您不想处理该对象,则不必处理该对象。

现在,如果您需要在特定时区中显示该字符串,我会在将其传递给 twig 之前在 php 中设置该时区

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