0

我正在使用'UTC'作为时区编写我的应用程序。我有每个用户的timezone列。我将在表示层中使用此值。日期/时间输出和输入将使用它。视图层中的时区

当没有当前用户时,我还将在视图图层中显示日期和时间。我希望回退时区是应用程序之一。我想避免每次都放这样的逻辑:

$now = new Carbon(); 
if (!Auth::guest()) { 
    $now->setTimezone(Auth::user()->timezone); 
} 

这一切终于让我回到我的问题。在哪里/如何设置视图层时区?

我提供我自己的答案,但我在寻找更好的解决方案,批评等

+0

在运行时设置'app.timezone'配置的中间件,或许? – ceejayoz

+0

@ceejayoz - 我不想改变应用程序时区,但我对你指向使用中间件感兴趣。作为Laravel n00b,我不太确定如何使用中间件。你能否详细说明一下? – Sonny

+0

做'config('app.timezone','Foo/Bar')'只会影响一个请求 - 它不会影响应用程序或其他浏览量的其余部分。至于中间件,https://laravel.com/docs/5.4/middleware – ceejayoz

回答

0

设置身份验证(登录)在会话值...

Auth::login($user); 
session(['timezone', $user->timezone]); 

使用它在视图层...

{{ \Carbon\Carbon::now()->setTimezone(session('timezone'))->format('h:i A T') }}