Lumen timezone 时区设置方法(慢了8个小时)


Posted in PHP onJanuary 20, 2018

根据 Laravel 4.x 和 5.0 的经验, 只需要到 config/app.php 中设置下 ‘timezone' 参数为 ‘PRC' 就好了, 找到 Lumen 的 config 目录, 在 /vendor/laravel/lumen-framework/config 路径下, 但是 config/app.php 的参数选项中没有 timezone 参数选项, 手动加上后也是无效的。

然后想到 Laravel 5 的 .env 文件, 结果发现 Lumen 的 .env 文件里也没有关于 timezone 设置的选项。

又回到 config 目录, 看看 config/database.php 中的设置, 关于 mysql 的默认配置如下:

'mysql' => [
 'driver'  => 'mysql',
 'host'   => env('DB_HOST', 'localhost'),
 'port'   => env('DB_PORT', 3306),
 'database' => env('DB_DATABASE', 'forge'),
 'username' => env('DB_USERNAME', 'forge'),
 'password' => env('DB_PASSWORD', ''),
 'charset'  => 'utf8',
 'collation' => 'utf8_unicode_ci',
 'prefix'  => env('DB_PREFIX', ''),
 'timezone' => env('DB_TIMEZONE','+00:00'),
 'strict'  => false,
],

在这里有个数据库的 timezone 设置, 默认 +00:00, 也就是 UTC 时间, 改成 +08:00 问题解决。由于项目启用了 .env 配置文件, 所以最终是在 .env 文件里添加了一行

DB_TIMEZONE=+08:00

数据库 timezone 问题解决。

数据库的 timezone 问题虽然解决了, 但是 app 的 timezone 问题还没解决, 全局搜索 lumen 项目, 找用到 timezone 的地方, 在 /vendor/laravel/lumen-framework/src/Application.php 文件中找到了初始化 lumen timezone 部分的代码

/**
* Create a new Lumen application instance.
*
* @param string|null $basePath
* @return void
*/
public function __construct($basePath = null)
{
 date_default_timezone_set(env('APP_TIMEZONE', 'UTC'));
 $this->basePath = $basePath;
 $this->bootstrapContainer();
 $this->registerErrorHandling();
}

代码中使用的 .env 参数为 APP_TIMEZONE, 值为 UTC, 在这里将 UTC 改为 PRC, 或者在 .env 文件里添加

APP_TIMEZONE=PRC

lumen php 的时区设置问题解决。

Lumen 时区设置总结

编辑 .env 文件添加配置

APP_TIMEZONE=PRC
DB_TIMEZONE=+08:00

若没启用 .env 配置文件, 编辑

/vendor/laravel/lumen-framework/config/database.php
/vendor/laravel/lumen-framework/src/Application.php

分别修改 APP_TIMEZONE 和 DB_TIMEZONE 参数值。

启用 .env 配置文件

将 Lumen 根目录下的 .env.example 文件重命名为 .env, 编辑 /bootstrap/app.php, 取消如下行代码的注释
Dotenv::load(__DIR__.'/../');

补充:

因为lumen默认使用格林尼治时间,需要转成北京时间。
在.env中加入

APP_TIMEZONE=PRC
DB_TIMEZONE=+08:00

这样时间就正确了

PHP 相关文章推荐
PHP循环获取GET和POST值的代码
Apr 09 PHP
深入了解 register_globals (附register_globals=off 网站打不开的解决方法)
Jun 27 PHP
PHP面向对象之旅:深入理解static变量与方法
Jan 06 PHP
PHP IE中下载附件问题解决方法
Jan 07 PHP
PHP轻量级数据库操作类Medoo增加、删除、修改、查询例子
Jul 04 PHP
PHP命名空间(namespace)的动态访问及使用技巧
Aug 18 PHP
php实现的click captcha点击验证码类实例
Sep 23 PHP
php获取当月最后一天函数分享
Feb 02 PHP
Yii2.0中使用js异步删除示例
Mar 10 PHP
CodeIgniter框架基本增删改查操作示例
Mar 23 PHP
PHP实现基于3DES算法加密解密字符串示例
Aug 24 PHP
ThinkPHP3.2框架操作Redis的方法分析
May 05 PHP
PHP Class SoapClient not found解决方法
Jan 20 #PHP
tp5(thinkPHP5)操作mongoDB数据库的方法
Jan 20 #PHP
php实现的mongoDB单例模式操作类
Jan 20 #PHP
PHP实现合并两个排序链表的方法
Jan 19 #PHP
php利用ob_start()清除输出和选择性输出的方法
Jan 18 #PHP
php通过header发送自定义数据方法
Jan 18 #PHP
PHP实现从上往下打印二叉树的方法
Jan 18 #PHP
You might like
Wordpress php 分页代码
2009/10/21 PHP
实现PHP+Mysql无限分类的方法汇总
2015/03/02 PHP
PHP实现批量删除(封装)
2017/04/28 PHP
js常用代码段收集
2011/10/28 Javascript
jquery ajax提交整个表单元素的快捷办法
2013/03/27 Javascript
json的定义、标准格式及json字符串检验
2014/05/11 Javascript
教你如何使用PHP输出中文JSON字符串
2014/05/22 Javascript
PHP+jQuery+Ajax实现多图片上传效果
2015/03/14 Javascript
JavaScript实现Iterator模式实例分析
2015/06/09 Javascript
JQuery实现样式设置、追加、移除与切换的方法
2015/06/11 Javascript
详解用webpack把我们的业务模块分开打包的方法
2017/07/20 Javascript
JS实现websocket长轮询实时消息提示的效果
2017/10/10 Javascript
vue2.0模拟锚点的实例
2018/03/14 Javascript
vue cli3.0结合echarts3.0与地图的使用方法示例
2019/03/26 Javascript
浅谈对于“不用setInterval,用setTimeout”的理解
2019/08/28 Javascript
JS函数本身的作用域实例分析
2020/03/16 Javascript
详解JavaScript 的执行机制
2020/09/18 Javascript
一则python3的简单爬虫代码
2014/05/26 Python
使用Python读写及压缩和解压缩文件的示例
2016/07/08 Python
浅析Python中yield关键词的作用与用法
2016/11/29 Python
Python将DataFrame的某一列作为index的方法
2018/04/08 Python
python实现自主查询实时天气
2018/06/22 Python
python地震数据可视化详解
2019/06/18 Python
在pycharm中文件取消用 pytest模式打开的操作
2020/09/01 Python
俄罗斯最大的在线珠宝大卖场:Nebo
2019/12/08 全球购物
什么是抽象
2015/12/13 面试题
高中家长寄语
2014/04/02 职场文书
舞蹈教育学专业求职信
2014/06/29 职场文书
无子女夫妻离婚协议书(4篇)
2014/10/20 职场文书
2015年度党风廉政建设工作情况汇报
2015/01/02 职场文书
大学生党员自我评价
2015/03/04 职场文书
2015年公务员转正工作总结
2015/04/24 职场文书
2015年社区党建工作汇报材料
2015/06/25 职场文书
拔河比赛新闻稿
2015/07/17 职场文书
2016年感恩节寄语
2015/12/07 职场文书
Jpa Specification如何实现and和or同时使用查询
2021/11/23 Java/Android