在Lumen或Laravel 5中更改时区


77

我正在使用Lumen框架。如何将时区更改为欧洲/巴黎CEST?

我在.env文件中添加了一个变量:

APP_TIMEZONE=Europe/Paris

但这不起作用。什么是更新时区的正确方法?


1
至少在流明5.2中这应该足够了。不过,您可能需要设置config / app.php文件才能在Laravel中使用env('APP_TIMEZONE')var。
马特·汉弗莱

2
它也适用于流明5.1。许多天后,我终于意识到仅更改服务器和数据库的时区是不够的-Lumen不在乎,直到您在.env文件上设置了时区
Bizarro

您怎么知道它不起作用?是数据库记录已关闭,还是php生成了时间?您是否有一个简单的示例来说明如何看到错误的时间?
Sherbrow

Answers:


157

您可以通过配置folder中的文件来设置应用时区app.phpconfig

要更改时区,请在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.
|

对我来说,我使用亚洲/达卡作为我的申请时区。

这是适当的语法:

'timezone' => 'Asia/Dhaka'

PHP 5时区列表


PST的时区“ America / Los_Angeles”。谢谢
Connor Leech '18

9
如果执行此操作,但它不起作用,请php artisan config:cache在更改app.php文件后运行。您需要在新设置下重新加载配置。
agm1984 '19

4
不要忘记,在行尾添加。;)。我的意思是'timezone' => 'Asia/Dhaka',
罗比·乌拉(Robi Ullah)先生

41

有两种更新代码的方法。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


17

更改app.php之后,请确保您运行:

 php artisan config:clear

这是清除配置设置缓存的必要条件。如果您发现更改app.php文件中的时区后,时间戳仍然不正确,则运行上述命令应会刷新所有内容,并且新时区应该有效。


8

请尝试以下操作-在流明设置中创建目录“ 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.timezoneapp.php配置文件是多余的,因为该app部分config('app.timezone')是指在文件名config/目录。
马特·汉弗莱

好的@MattHumphrey,如果您觉得我的答案不正确,则可以编辑我的答案。
Sachin Vairagi

谢谢。最后一个为我工作。当相同的代码行适用于某人而不适用于其他人时,这非常令人沮丧。
Mahammad Isgandarli

@MahammadIsgandarli-很高兴知道它对您
有用

添加date_default_timezone_set到路由文件对我来说很好。
哈桑


4

就我而言(从Lumen 5.1项目中的MySQL数据库读取日期),唯一有效的解决方案是使用Carbon设置变量的时区:

    $carbonDate = new Carbon($dateFromDBInUTC);
    $carbonDate->timezone = 'America/New_York';
    return $carbonDate->toDayDateTimeString(); // or $carbonDate->toDateTimeString() for ISO format

DB_TIMEZONE=-05:00.env文件中使用几乎可以正常工作,但不能处理DST更改。

APP_TIMEZONE=America/New_York.env文件中使用时,对Lumen 5.1 Webapp中从MySQL数据库检索的时区值没有影响,但在Lavarel 5.1中有效。

而且Lumen根本不读取[lumen_project]/config/app.php我创建的 文件(当我在其中放置语法错误时,它没有抱怨)。

使用date_default_timezone_set也不起作用。


1
谢谢你 我尝试了许多其他解决方案(包括您在摘要中列出的解决方案),但没有任何效果。目前,在Controller中将时区设置为Carbon变量似乎已经奏效。
谢尔登·斯科特

4

在Lumen的.env文件中,指定时区。对于印度,这将是:

APP_TIMEZONE = 'Asia/Calcutta'
DB_TIMEZONE = '+05:30'

3

您只需要在配置目录中编辑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',



1

有一种简单的方法可以在laravel或lumen中设置默认时区。

在多个环境中工作时这很有用,您可以根据每个环境使用不同的时区。

  1. 打开项目目录中存在的.env文件
  2. 添加APP_TIMEZONE=Asia/Kolkata.env(你可以选择在任何时区支持时区
  3. 打开项目目录的bootstrap文件夹存在的app.php
  4. 添加date_default_timezone_set(env('APP_TIMEZONE', 'UTC'));app.php

进行此更改后,您的项目将采用.env设置的时区,如果设置任何时间,则默认采用UTC

修改时区设置运行命令后php artisan config:clear,您的更改将反映在您的应用程序中



-2

请转到.env文件,并将AWS_DEFAULT_REGION的值更改为您想要的特殊区域...

AWS_DEFAULT_REGION = Asia/Dhaka

-3

只是在.env中更改APP_TIMEZONE = Asia / Colombo并运行php artisan lumen-config:cache 在lumen 5.7中对我有用


-5

我在.env APP_TIMEZONE中对其进行了修改。

对于哥伦比亚:APP_TIMEZONE = America / Bogota,对于巴黎也是如此:APP_TIMEZONE = Europe / Paris

资料来源:https : //www.php.net/manual/es/timezones.europe.php


3
我看不出这如何回答这个问题。
Dharman

就是这样!您的眼睛多么好,您必须非常聪明...最初,APP_TIMEZONE具有此UTC值,但是如果将其更改为php值之一,则会更改时区..,在其他注释中,它也是很好的解释
Cristhian A Vargas
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.