在 Lumen 或 Laravel 5 中更改时区
Posted
技术标签:
【中文标题】在 Lumen 或 Laravel 5 中更改时区【英文标题】:Change Timezone in Lumen or Laravel 5 【发布时间】:2015-12-29 07:39:47 【问题描述】:我正在使用 Lumen 框架。如何将时区更改为欧洲/巴黎 CEST?
我在.env
文件中添加了一个变量:
APP_TIMEZONE=Europe/Paris
但这不起作用。更新时区的正确方法是什么?
【问题讨论】:
这至少在 Lumen 5.2 中应该足够了。不过,您可能必须将 config/app.php 文件设置为使用 Laravel 中的 env('APP_TIMEZONE') 变量。 它也适用于 Lumen 5.1。很多天后,我终于意识到仅更改服务器和数据库的时区是不够的 - Lumen 不会在意,直到您在 .env 文件上设置时区 你怎么知道它不起作用?是关闭的数据库记录,还是php生成的时间?你有一个最小的例子来说明你如何看待错误的时间吗? 它不适合我。为什么?数据库中的时间显示,晚了8小时... 【参考方案1】:您可以通过在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'
timezones 的 PHP 列表。
【讨论】:
太平洋标准时间的时区“美国/洛杉矶”。谢谢 如果你这样做但它不起作用,请在更改你的 app.php 文件后运行php artisan config:cache
。您需要在新设置下重新加载配置。
不要忘记在行尾添加,
。 ;) 。我的意思是'timezone' => 'Asia/Dhaka',
【参考方案2】:
请试试这个 - 在你的 lumen 设置中创建一个目录 'config',然后在这个 'config' 目录中创建 app.php 文件。它看起来像这样 -
<?php return ['app.timezone' => 'America/Los_Angeles'];
然后你可以像这样在任何地方访问它的值 -
$value = config('app.timezone');
如果不行,可以在routes.php中添加这一行
date_default_timezone_set('America/Los_Angeles');
这对我有用!
【讨论】:
这是不正确的 - 将app.timezone
放在app.php
配置文件中是多余的,因为config('app.timezone')
的app
部分指的是config/
目录中的文件名。跨度>
好的@MattHumphrey,如果您认为我的答案不正确,您可以编辑我的答案。
谢谢。最后一个为我工作。当相同的代码行适用于某人而不适用于其他人时,这是非常令人沮丧的。
@MahammadIsgandarli - 很高兴知道它对你有用 :)
将 date_default_timezone_set 添加到路由文件对我来说效果很好。【参考方案3】:
就我而言(从 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
对在 Lumen 5.1 webapp 中从 MySQL 数据库检索到的时区值没有影响,但它在 Lavarel 5.1 中有效。
此外,Lumen 根本没有读取我创建的 [lumen_project]/config/app.php
文件(当我在那里放置语法错误时它没有抱怨)。
使用date_default_timezone_set
也不起作用。
【讨论】:
谢谢。我尝试了许多其他解决方案(包括您在摘要中列出的那些),但没有任何效果。将 Controller 中的时区设置为 Carbon 变量现在似乎已经奏效了。【参考方案4】:使用 php 手册中的 php 时区 Php time zones
例如,我从 config/app.php 中的 UTC 值更改为
'timezone' => 'Africa/Nairobi',
【讨论】:
【参考方案5】:你只需要编辑 config 目录下的 de app.php 文件 只需找到下一行
/*
|--------------------------------------------------------------------------
| 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',
【讨论】:
【参考方案6】:在 Lumen 的 .env 文件中,指定时区。对于印度来说,就像:
APP_TIMEZONE = 'Asia/Calcutta'
DB_TIMEZONE = '+05:30'
【讨论】:
【参考方案7】:有两种方法可以更新您的代码。 1. 请打开您的项目目录下config目录下的app.php文件。 转到页面并检查 Application Timezone 你会在哪里找到
'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
【讨论】:
【参考方案8】:更改app.php后,确保运行:
php artisan config:clear
这是清除配置设置缓存所必需的。如果您在更改 app.php 文件中的时区后发现时间戳仍然错误,那么运行上述命令应该会刷新所有内容,并且您的新时区应该是有效的。
【讨论】:
【参考方案9】:对我来说 app.php 在这里 /vendor/laravel/lumen-framework/config/app.php
但我也可以从 .env
文件中将其更改为 here 列出的任何值(PHP 原始文档 here)。
【讨论】:
【参考方案10】:转到 config -> app.php 并更改 'timezone' => 'Asia/Jakarta',
(这是我的时区)
【讨论】:
【参考方案11】:laravel项目默认时区为**UTC*
您可以在config文件夹的App.php中找到时区设置'timezone' => 'UTC',
现在根据您的时区更改,我是亚洲/加尔各答
所以对我来说设置将是 'timezone' => 'Asia/Calcutta',
更改时区设置后运行命令php artisan config:cache*时区列表访问此网址https://www.w3schools.com/php/php_ref_timezones.asp
【讨论】:
【参考方案12】:只需在 .env 中更改 APP_TIMEZONE=Asia/Colombo 并运行 php 工匠流明配置:缓存 流明 5.7 为我工作
【讨论】:
【参考方案13】:我在 .env APP_TIMEZONE 中修改它。
对于哥伦比亚:APP_TIMEZONE = 美国/波哥大 也适用于这样的巴黎:APP_TIMEZONE = Europe / Paris
来源:https://www.php.net/manual/es/timezones.europe.php
【讨论】:
【参考方案14】:有一种简单的方法可以在 laravel 或 lumen 中设置默认时区。
这对于在多个环境中工作时很有帮助,您可以根据每个环境使用不同的时区。
-
打开项目目录中的 .env 文件
在
.env
中添加APP_TIMEZONE=Asia/Kolkata
(您可以从supported timezones 中选择任何时区)
打开项目目录的 bootstrap 文件夹中的 app.php
在app.php
中添加date_default_timezone_set(env('APP_TIMEZONE', 'UTC'));
。
通过此更改,您的项目将采用 .env 设置的时区,如果没有设置任何设置,则默认采用 UTC。 p>
修改时区设置后运行命令
php artisan config:clear
,以便您的更改反映在您的应用程序中
【讨论】:
以上是关于在 Lumen 或 Laravel 5 中更改时区的主要内容,如果未能解决你的问题,请参考以下文章
Laravel/Lumen 5.3.3:在迁移中覆盖 env 值