我正在使用Lumen框架。如何将时区更改为欧洲/巴黎CEST?
我在我的.env
文件中添加了一个变量:
APP_TIMEZONE=Europe/Paris
但是这样行不通。更新时区的正确方法是什么?
您可以通过配置config
文件夹中的app.php
文件来设置您的应用程序时区。
要更改时区,请修改app.php文件中的timezone值。
此内容写在这个部分中。
|--------------------------------------------------------------------------
| Application Timezone
|--------------------------------------------------------------------------
|
| Here you may specify the default timezone for your application, which
| will be used by the PHP date and date-time functions. We have gone
| ahead and set this to a sensible default for you out of the box.
|
我在我的应用程序中使用 Asia/Dhaka 作为时区。
这里是适当的语法:
'timezone' => 'Asia/Dhaka'
PHP的时区列表。
'timezone' => 'Asia/Dhaka',
。 - Md. Robi Ullah有两种更新您的代码的方法。 1. 请打开位于项目根目录下的config目录中的app.php文件。 向下滚动页面并检查应用程序时区, 您会找到
'timezone' => 'UTC',
在这里您可以添加您的时区,例如
'timezone' => 'Europe/Paris',
如果您想从.env
文件中管理您的时区,则可以在config.php
文件中添加以下代码。'timezone' => env('APP_TIMEZONE', 'UTC'),
并在您的.env
文件中添加以下行。
APP_TIMEZONE='Europe/Paris'
请查看以下链接以获取更多信息:https://laravel.com/docs/5.6/configuration#accessing-configuration-values修改app.php后,请确保运行:
php artisan config:clear
这是清除配置设置缓存所必需的。如果在更改app.php文件中的时区后发现时间戳仍然不正确,则运行上述命令应该可以刷新所有内容,您的新时区应该生效。
<?php return ['app.timezone' => 'America/Los_Angeles'];
那么您可以像这样在任何地方访问它的值 -
$value = config('app.timezone');
如果它不能正常工作,您可以在routes.php中添加这些行。date_default_timezone_set('America/Los_Angeles');
这对我有用!
app.php
配置文件中放置app.timezone
是多余的,因为config('app.timezone')
中的app
部分是指config/
目录中的文件名。 - Matt Humphreydate_default_timezone_set
应该添加到 AppServiceProvider.php 的 boot
方法中,而不是 _routes.php_,因为这样更合理,尽管两种方式都可以工作。 - Ahmad Baktash HayeriAPP_TIMEZONE = 'Asia/Calcutta'
DB_TIMEZONE = '+05:30'
在 Laravel 或 Lumen 中设置默认时区有一个简单的方法。
在使用多个环境并且每个环境基于不同的时区时,这非常有用。
.env
文件中添加 APP_TIMEZONE=Asia/Kolkata
(您可以从支持的时区列表中选择任何时区)。app.php
文件中添加 date_default_timezone_set(env('APP_TIMEZONE', 'UTC'));
。通过此更改,您的项目将采用您在 .env 中设置的时区,如果没有设置,则默认采用 UTC。
修改时区设置后,请运行命令
php artisan config:clear
以便应用程序反映出您的更改。
/*
|--------------------------------------------------------------------------
| Application Timezone
|--------------------------------------------------------------------------
|
| Here you may specify the default timezone for your application, which
| will be used by the PHP date and date-time functions. We have gone
| ahead and set this to a sensible default for you out of the box.
|
*/
'timezone' => 'UTC',
并且.. 将它更改为:
'timezone' => 'Europe/Paris',
在我的情况下(读取Lumen 5.1项目中MySQL数据库的日期),唯一有效的解决方法是使用Carbon设置变量的时区:
$carbonDate = new Carbon($dateFromDBInUTC);
$carbonDate->timezone = 'America/New_York';
return $carbonDate->toDayDateTimeString(); // or $carbonDate->toDateTimeString() for ISO format
.env
文件中使用 DB_TIMEZONE=-05:00
几乎可以解决问题,但无法处理夏令时更改的情况。.env
文件中使用 APP_TIMEZONE=America/New_York
对从 MySQL 数据库检索到的时区值在 Lumen 5.1 webapp 中没有影响,但在 Lavarel 5.1 中有效。[lumen_project]/config/app.php
文件(即使我在那里放置语法错误,它也没有发出警告)。date_default_timezone_set
也没有效果。
composer update
命令并清除config:cache
缓存。 - mercury