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') }}