在laravel中动态更改TimeZone

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在laravel中动态更改TimeZone相关的知识,希望对你有一定的参考价值。

在我的项目中有时区下拉(PT,CST等),当管理员从下拉列表中更改时区时,管理面板会反映所选下拉列表的时区。 如何根据所选选项更改Config / app.php“timezone”(应用程序时区)。

答案

您可以使用Laravel辅助函数config来设置时区。但是,这只会影响您将收到的请求。

config(['app.timezone' => $timezone]);

如果您的目标是更改时区并在每个请求上运行,那么将更改的时区保存在DB或文件中会怎样。然后,为DB编写查询或读取app / config.php中的文件,并在文件中更改索引时区的值。

例如(文件示例):

当您更改时区时,它会保存在文件中。

file_put_contents("path/to/file", $timezone);

而且,在app/config.php

$timezone= file_get_contents("path/to/file");
return [
 . . .   
    'timezone' => $timezone,
 . . .
]
另一答案

你还需要打电话给date_default_timezone_set

    config(['app.timezone' => $timezone]);
    date_default_timezone_set($timezone);
另一答案

如果要为将来的所有请求保留新的时区,则需要使用larapack/config-writer之类的软件包才能将时区保存到app配置文件中。

处理此问题的另一种方法是在DB中保留时区,在每个请求中获取它并动态地使用config(['app.timezone' => $timezone])进行设置。

另一答案

您可以使用middleware来实现这一目标,无论您采用哪种路线,都可以提及应用该中间件的所有路线。 您可以从数据库中获取该数据并按如下方式应用它,

config('app.timezone', 'your selected timezone')

以上是关于在laravel中动态更改TimeZone的主要内容,如果未能解决你的问题,请参考以下文章

在 Lumen 或 Laravel 5 中更改时区

Laravel 中的动态数据库更改

我想在更改时保存表单,并使用 laravel 和 Jquery 创建一个动态表单

方向更改时不可见的片段

在 Laravel 中动态更改数据库连接 [重复]

Laravel 动态更改连接