Lumen的时区问题

Sim*_*n R 3 php datetime laravel lumen

我有一个问题,我在Lumen的配置中设置时区到欧洲/伦敦.这一直工作得非常好,直到最近更改为DST,它正在设置正确的created_at和updated_at日期,但是当我调用记录时,它显示的日期时间好像是UTC而不是BST/DST.

在我的config/app.php文件中,我有;

...

timezone' => 'Europe/London',

...
Run Code Online (Sandbox Code Playgroud)

在我的检查路线中,我有;

$app->get('mytime', function() {
    $now = Carbon\Carbon::now();
   dd($now, date('Y-m-d H:i:s'));
});
Run Code Online (Sandbox Code Playgroud)

返回

Carbon {#35 ?
  +"date": "2016-04-14 10:33:15.000000"
  +"timezone_type": 3
  +"timezone": "Europe/London"
}
Run Code Online (Sandbox Code Playgroud)

然而,当我拉出一条记录表示创建日期为"2016-04-14 10:00:00"时,它会返回'2016-04-14 09:00:00'.

我们将非常感谢您对此时区问题的任何帮助.

Sim*_*n R 5

我遇到了解决方案.它发现有一个变量需要添加到Lumen中的.env文件中,您要处理数据库.

DB_TIMEZONE=+01:00
Run Code Online (Sandbox Code Playgroud)

您可能需要添加一个cron作业来更新与DST之间的更改变量,因为不支持"欧洲/伦敦".

  • 您还可以使用 `DB_TIMEZONE=null` 来保持服务器时区(可能已经同步到 `Europe/London` (4认同)