如何在Symfony 3中设置时区?

Arg*_*itz 3 timezone symfony symfony3.x

我在Ubuntu 14.04服务器中部署了symfony 3应用程序。

当我在命令窗口中执行“ date”时,服务器会回复“ Fri May 11 10:02:30 CEST 2018”,但是当我在树枝中将日期时间转储“ {{dump(“ now” | date)}}“时,响应为“ May 11,2018 04:04”

如果输入控制器函数(路由)的标题,则为“ date_default_timezone_set(“ Europe / Madrid”);“ 它工作正常,但我不想在所有控制器的所有功能中都复制此行。

然后,我想知道在哪里可以为所有控制器全局设置时区作为Symfony的配置,或者在哪里可以全局设置此PHP命令(date_default_timezone_set(“ Europe / Madrid”))。

谢谢

[编辑]

一种解决方案可能是将此代码放在控制器的标头中,但我想将其设置为一个,而不是在所有控制器,服务等中……

public function __construct(){
    date_default_timezone_set("Europe/Madrid");
}
Run Code Online (Sandbox Code Playgroud)

lxg*_*lxg 8

如果您无法在中设置它php.ini,或者想要确保该值与目标环境无关,则最简单的方法是在您的AppBundle中进行设置:

class AppBundle extends Bundle
{
    public function boot()
    {
        parent::boot();
        date_default_timezone_set("Europe/Madrid");
    }
}
Run Code Online (Sandbox Code Playgroud)

另外,如果您没有AppBundle(或任何其他自己的捆绑软件),则可以在AppKernel::registerBundles()加载捆绑软件之前将其添加到方法中。

  • 谢谢!在Symfony 4中,我通过在方法`registerBundles`中的`Kernel.php`中添加了上述行来解决了这个问题。 (2认同)