我的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文档