In my project there is drop-down of time zones(PT,CST etc), when Admin changes the timezone from drop-down the admin panel reflects the timezone from the selected drop down.
How to change Config/app.php "timezone"( Application Timezone) according to the selected option.

- 423
- 1
- 6
- 17
6 Answers
you need also call date_default_timezone_set
config(['app.timezone' => $timezone]);
date_default_timezone_set($timezone);

- 782
- 7
- 15
-
You may want to add `\Log::setTimezone(new \DateTimeZone('UTC'));` to the `boot()` method of your `AppServiceProvider` to ensure the your logs are still in UTC time. – Alan Reed May 09 '23 at 14:22
You can use Laravel helper function config
to set timezone. However, this will affects only the request you will receive.
config(['app.timezone' => $timezone]);
If your goal is to change once the timezone and run on every request then what about saving the changed timezone in DB or in a file. Then, write a query for DB or read a file in app/config.php and change the value of index timezone in a file.
For example (file example):
When you changed the timezone it saves in a file.
file_put_contents("path/to/file", $timezone);
And, in app/config.php
$timezone= file_get_contents("path/to/file");
return [
. . .
'timezone' => $timezone,
. . .
]

- 898
- 1
- 14
- 29
-
1Whenever there is change in config file, need to run php artisan config:cache to get the changes. How the changes reflect without config:cache command? – SVM Dec 22 '17 at 09:35
-
I don't think so.... did you try? but anyway you can add exec("php artisan cache:clear") that execute random time.. or just once when the file has changed. you can use also filemtime() function. something like this now()-filemtime() < 5, then run exec command – Phoenix404 Dec 22 '17 at 11:49
If you want to keep a new time zone for all future requests, you need to use a package like larapack/config-writer to be able to save the time zone to the app
config file.
Another way to handle this is to keep time zone in DB, fetch it in every request and set it with config(['app.timezone' => $timezone])
dynamically.

- 158,981
- 26
- 290
- 279
You can use middleware
to achieve this, whichever routes you will write mention all those applying with that middleware.
You can fetch that data from database and apply it like as follows,
config('app.timezone', 'your selected timezone')

- 18,271
- 7
- 41
- 60
You can use service provider. That way, you first need to get the settings information from the database and then change the settings inside the config file.
Config::set('app.timezone', $db['timezone'] ?? config('app.timezone'));

- 60
- 4
In AppServiceProvider boot()
$settings = Settings::first();
date_default_timezone_set($settings->timezone ? $settings->timezone : config('app.timezone'));
This overrides default TZ value in app.php

- 1
- 3