@mikebarwick You can add a middleware for setting the timezone for every request with
Config::set('app.timezone','custom time zone');
Its better store user specified the time zone in session and set it in middleware for every request.
Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.
What's the trick here guys? I want to set this globally for each user. What's the best approach? In user table I have timezone column (default, 'America/New_York, etc.).
Speak to me, wise ones...show me the light.
@Snapey thanks for the insight :) I think the following middleware is a little better, it is based on your suggestions:
//file: app/Http/Middleware/TimeZone.php
<?php namespace App\Http\Middleware;
use Closure;
use Illuminate\Contracts\Auth\Guard;
class TimeZone {
/**
* The current logged in user instance
* @var [type]
*/
protected $user;
/**
* creates an instance of the middleware
* @param Guard $auth
*/
public function __construct(Guard $auth)
{
$this->user = $auth->user();
}
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$this->setTimeZone($request);
return $this->addTimeZoneCookie($request, $next($request));
}
/**
* sets the time zone from cookie or from the user setting
* @param Illuminate\Http\Request $request
*/
public function setTimeZone($request)
{
if($this->user)
{
return date_default_timezone_set($this->user->timezone);
}
$timeZone = $request->cookie('time_zone');
if($timeZone)
{
return date_default_timezone_set($timeZone);
}
return;
}
/**
* adds the cookie to response
* @param Illuminate\Http\Request $request
* @param Illuminate\Http\Response $response
*/
public function addTimeZoneCookie($request, $response)
{
if(! $request->cookie('time_zone') && ! is_null($this->user))
{
return $response->withCookie(cookie('time_zone', $this->user->timezone, 120));
}
return $response;
}
}
/cc : @mikebarwick
Usman.
Please or to participate in this conversation.