Laravel 7上Routes文件中的错误时间



我的config/app.php设置了时区:

...
'timezone' => 'Asia/Kolkata',
...

当我在修补程序上使用它时,效果很好:

Psy Shell v0.10.4 (PHP 7.4.7 — cli) by Justin Hileman
>>> now()
=> IlluminateSupportCarbon @1595277419 {#4447
date: 2020-07-21 02:06:59.522138 Asia/Kolkata (+05:30),
}
>>> CarbonCarbon::now()
=> CarbonCarbon @1595277429 {#4445
date: 2020-07-21 02:07:09.801135 Asia/Kolkata (+05:30),
}
>>> 

但当我在web.hp:中重复同样的内容时

Route::get('/time', function(){
return now();
});

返回UTC时间:

"2020-07-20T20:44:32.444592Z"

为什么它在路由文件中不同?如何在任何路线文件中获取当前时间?

您应该为此使用控制器,尤其是当视图中有动态部分时。作为应用程序启动的一部分,将加载路由和配置。我的猜测是在配置之前加载路由。

此外,您永远不应该在路由中使用可调用的,因为这会使缓存路由变得不可能。

我还很好奇,从路由调用now((是否只返回您提供的字符串,或者它是否返回一个完整的Carbon对象?修补程序中的工作目录是否设置为您的应用程序,只是为了确保您不会比较苹果和桔子。

获取当前时区的日期。您可以使用DateTime,带有参数DateTimeZone

new Datetime("now", new DateTimeZone(config('app.timezone'));

然后,设置日期格式。

DateTime文档

最新更新