artisan 导致的时区问题

1:我已经设置了php.ini以及laravel框架的app.timezone时区
2:为了准确性我在artisan入口文件直接输出时间区

echo date_default_timezone_get();//输出正确的时间区PRC

$kernel = $app->make(Illuminate\Contracts\Console\Kernel::class);

$status = $kernel->handle(
    $input = new Symfony\Component\Console\Input\ArgvInput,
    new Symfony\Component\Console\Output\ConsoleOutput
);

以上说明php.ini配置正确。

3:我进入artisan tinker,先获取laravel框架的时间区。

>>> config('app.timezone')
=> "PRC"

以上说明laravel框架config时区配置正确。

4:我系统时间肯定也正确

root@homestead:~# date "+%Y-%m-%d %H:%M:%S"
2018-12-08 13:58:37

以上说明系统时间正确。

最后问题是:只要是在artisan下输出时间就时区就不对,相差8小时

>>> date_default_timezone_get()   
=> "Etc/GMT+0"

1:尝试过在APPServiceProvider 的 register 方法里面调用 date_default_timezone_set(PRC);也不行。
2:唯一可行的方式就是哪里用到,就在哪里set('PRC'),但是这样很麻烦。所以我感觉是artisan 截断了时区一样!!!???
3:我搜索全局date_default_timezone_set,有一个地方

\vendor\laravel\framework\src\Illuminate\Foundation\Bootstrap\LoadConfiguration.php:
   49:         date_default_timezone_set($config->get('app.timezone', 'UTC'));
                 echo date_default_timezone_get();//输出正确的时间区PRC
   51          mb_internal_encoding('UTF-8');

我也断个点输出时间正常,但是回到artisan也不对了。

困扰几天了,希望有人遇到过这个问题。

终生学习者
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
leo
最佳答案

你试试创建一个全新的项目看看还有没有这个问题

5年前 评论
讨论数量: 9
终生学习者

@leo @Wi1dcard 我最新研究结果还是不行。 是不是因为我的是laravel 5.5原因????

5年前 评论
ALMAS

我也遇到了,没有找到解决办法,论坛也有好几个人遇到同样的问题

5年前 评论
终生学习者

@ALMAS 这已经是我发帖3次了,还是没解决。

5年前 评论
leo

你试试创建一个全新的项目看看还有没有这个问题

5年前 评论
mythzg91

@一个菜鸟

试一试 php artisan config:cache

5年前 评论
终生学习者

@leo 新的项目就可以,实在不知道为什么是这样的。我与我的同事用相同的环境以及相同的项目都出先了这样的问题。config/app.php 更改没用作用。但是新的项目里只需要更改它就行了。太TMD的奇怪了

5年前 评论
leo

@一个菜鸟 说明老的项目的代码有问题,要么是自己写的,要么是引入了某个包导致的

5年前 评论

看看你Model下是否使用 const CREATED_AT = '数据库时间字段'; 把这个注释掉就好了

2年前 评论

看看你Model下是否使用 //const CREATED_AT = '数据库时间字段'; 把这个注释掉就好了

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!