Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to set local timezone in laravel

Is there a way to set local timezone in laravel?

In config/app.php

'timezone' => 'UTC',
  • What should be added so that timezone value above uses local timezone?

After some research, stumbled upon the following PHP way of dealing with it:

$userTimezone = Auth::user()->timezone;

date_default_timezone_set($userTimezone);

// and change the configuration so they match

Config::set('app.timezone', $userTimezone)

But, Is there an elegant solution for this other than converting the timezone using the above code.

Cheers

like image 865
Roy M J Avatar asked Jul 17 '15 11:07

Roy M J


People also ask

What is laravel timezone?

Laravel Timezone is a package by James Mills that sets a timezone for a user in your application and then show date/times to them in their local timezone. It works by listening for the user login event and setting the timezone in the database. It uses Laravel GeoIP to look up the user using an IP address.


1 Answers

Don't do that. Never set the global Laravel timezone to user's timezone. You'll face endless problems.

Choose you application timezone, set the Laravel config to that timezone and never change it.

Instead, when you need to show a date in user's timezone do something like

User::find(1)->foobazed_at->timezone(Auth::user()->timezone);

To control which model columns are automatically converted to Carbon\Carbon instances, add the following method to your model file:

public function getDates()
{
    return array('foobazed_at', static::CREATED_AT, static::UPDATED_AT, static::DELETED_AT);
}
like image 61
Javi Stolz Avatar answered Oct 19 '22 12:10

Javi Stolz