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 购物车实例(申精)
May 11 PHP
PHP教程 变量定义
Oct 23 PHP
php小技巧 把数组的键和值交换形成了新的数组,查找值取得键
Jun 02 PHP
php设计模式 Chain Of Responsibility (职责链模式)
Jun 26 PHP
openPNE常用方法分享
Nov 29 PHP
Zend Framework中的简单工厂模式 图文
Jul 10 PHP
php面象对象数据库操作类实例
Dec 02 PHP
php+flash+jQuery多图片上传源码分享
Jul 27 PHP
YII框架常用技巧总结
Apr 27 PHP
关于laravel模板中生成URL的几种模式总结
Oct 18 PHP
PHP实现简单登录界面
Oct 23 PHP
PHPUnit + Laravel单元测试常用技能
Nov 06 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
在同一窗体中使用PHP来处理多个提交任务
2008/05/08 PHP
解析php中array_merge与array+array的区别
2013/06/21 PHP
thinkPHP连接sqlite3数据库的实现方法(附Thinkphp代码生成器下载)
2016/05/27 PHP
php封装json通信接口详解及实例
2017/03/07 PHP
PHP面向对象之工作单元(实例讲解)
2017/06/26 PHP
日期 时间js控件
2009/05/07 Javascript
firefox firebug中文入门教程 脚本之家新年特别版
2010/01/02 Javascript
两个Javascript小tip资料
2010/11/23 Javascript
js中根据字数截取字符串,不能截断url
2012/01/12 Javascript
jQuery.holdReady()方法用法实例
2014/12/27 Javascript
javascript面向对象之this关键词用法分析
2015/01/13 Javascript
基于jquery实现可定制的web在线富文本编辑器附源码下载
2015/11/17 Javascript
jQuery mobile 移动web(6)
2015/12/20 Javascript
jQuery获取单击节点对象的方法
2016/06/02 Javascript
vue+webpack实现异步加载三种用法示例详解
2018/04/24 Javascript
vue项目中使用百度地图的方法
2018/06/08 Javascript
微信小程序仿知乎实现评论留言功能
2018/11/28 Javascript
vue多次循环操作示例
2019/02/08 Javascript
json_decode 索引为数字时自动排序问题解决方法
2020/03/28 Javascript
vue + node如何通过一个Txt文件批量生成MP3并压缩成Zip
2020/06/02 Javascript
python时间整形转标准格式的示例分享
2014/02/14 Python
python文件读写并使用mysql批量插入示例分享(python操作mysql)
2014/02/17 Python
JSONLINT:python的json数据验证库实例解析
2017/11/28 Python
python在线编译器的简单原理及简单实现代码
2018/02/02 Python
使用python接入微信聊天机器人
2020/03/31 Python
python中的TCP(传输控制协议)用法实例分析
2019/11/15 Python
python实现人工蜂群算法
2020/09/18 Python
Python截图并保存的具体实例
2021/01/14 Python
Banggood官网:面向全球客户的综合商城
2017/04/19 全球购物
会计岗位描述
2014/02/22 职场文书
汽车技术服务与贸易专业求职信
2014/07/20 职场文书
2014年统战工作总结
2014/12/09 职场文书
银行稽核岗位职责
2015/04/13 职场文书
祝寿主持词
2015/07/02 职场文书
小学班主任教育随笔
2015/08/15 职场文书
Go语言基础知识点介绍
2021/07/04 Golang