【问题标题】:Change Timezone in Lumen or Laravel 5在 Lumen 或 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小时...

标签: php laravel-5 lumen


【解决方案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 中设置默认时区。

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

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

                      通过此更改,您的项目将采用 .env 设置的时区,如果没有设置任何设置,则默认采用 UTC p>

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

                      【讨论】:

                        猜你喜欢
                        • 1970-01-01
                        • 2020-08-04
                        • 2018-06-04
                        • 2023-03-27
                        • 1970-01-01
                        • 2015-08-11
                        • 2017-06-26
                        相关资源
                        最近更新 更多