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 相关文章推荐
提取HTML标签
Oct 09 PHP
PHP无限分类的类
Jan 02 PHP
php设计模式 Observer(观察者模式)
Jun 26 PHP
Laravel 5 框架入门(四)完结篇
Apr 09 PHP
初识通用数据库操作类――前端easyui-datagrid,form(php)
Jul 31 PHP
详解php的socket通信
Aug 11 PHP
Apache PHP MySql安装配置图文教程
Aug 27 PHP
php实现查询功能(数据访问)
May 23 PHP
PHP依赖注入(DI)和控制反转(IoC)详解
Jun 12 PHP
PHP 爬取网页的主要方法
Jul 13 PHP
tp5框架基于ajax实现异步删除图片的方法示例
Feb 10 PHP
PHP 8新特性简介
Aug 18 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
电脑硬件及电脑配置知识大全
2020/03/17 数码科技
Fedora下安装php Redis扩展笔记
2014/09/03 PHP
php用户登录之cookie信息安全分析
2016/05/13 PHP
ThinkPHP 模板引擎使用详解
2017/05/07 PHP
php判断/计算闰年的方法小结【三种方法】
2019/07/06 PHP
IE与Firefox下javascript getyear年份的兼容性写法
2007/12/20 Javascript
编写跨浏览器的javascript代码必备[js多浏览器兼容写法]
2008/10/29 Javascript
showModalDialog模态对话框的使用详解以及浏览器兼容
2014/01/11 Javascript
jsPDF生成pdf后在网页展示实例
2014/01/16 Javascript
jQuery统计指定子元素数量的方法
2015/03/17 Javascript
javascript基本包装类型介绍
2015/04/10 Javascript
js实现仿百度汽车频道选择汽车图片展示实例
2015/05/06 Javascript
js实现当前输入框高亮显示的方法
2015/08/19 Javascript
JS简单随机数生成方法
2016/09/05 Javascript
实例浅析js的this
2016/12/11 Javascript
关于TypeScript中import JSON的正确姿势详解
2017/07/25 Javascript
koa2 从入门到精通(小结)
2019/07/23 Javascript
使用zrender.js绘制体温单效果
2019/10/31 Javascript
VUE项目实现主题切换的多种方法
2020/11/26 Vue.js
vue 递归组件的简单使用示例
2021/01/14 Vue.js
[01:56]《DOTA2》中文配音CG
2013/04/22 DOTA
[10:54]Team Spirit vs Navi
2018/06/07 DOTA
Python 操作MySQL详解及实例
2017/04/30 Python
python并发和异步编程实例
2018/11/15 Python
Python之时间和日期使用小结
2019/02/14 Python
numpy.linalg.eig() 计算矩阵特征向量方式
2019/11/29 Python
Django中密码的加密、验密、解密操作
2019/12/19 Python
Python识别html主要文本框过程解析
2020/02/18 Python
python GUI库图形界面开发之PyQt5访问系统剪切板QClipboard类详细使用方法与实例
2020/02/27 Python
Under Armour安德玛英国官网:美国高端运动科技品牌
2018/09/17 全球购物
美国牛仔品牌:True Religion
2018/11/16 全球购物
.net开发工程师面试题
2014/02/25 面试题
一月红领巾广播稿
2014/02/11 职场文书
美容院营销方案
2014/03/05 职场文书
2015年信访工作总结
2015/04/07 职场文书
解析MySQL binlog
2021/06/11 MySQL