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个人网站架设连环讲(三)
Oct 09 PHP
使用php来实现网络服务
Sep 15 PHP
PHP 获取客户端真实IP地址多种方法小结
May 15 PHP
phpize的深入理解
Jun 03 PHP
PHP中对于浮点型的数据需要用不同的方法解决
Mar 11 PHP
PHP数据库操作之基于Mysqli的数据库操作类库
Apr 19 PHP
php检测文件编码的方法示例
Apr 25 PHP
模板引擎smarty工作原理以及使用示例
May 25 PHP
ThinkPHP页面跳转success与error方法概述
Jun 25 PHP
详解PHP+AJAX无刷新分页实现方法
Nov 03 PHP
php生成4位数字验证码的实现代码
Nov 23 PHP
Laravel中encrypt和decrypt的实现方法
Sep 24 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中利用str_pad函数生成数字递增形式的产品编号
2013/09/30 PHP
php无限级分类实现方法分析
2016/10/19 PHP
PHP队列场景以及实现代码实例详解
2021/02/26 PHP
JavaScript Array扩展实现代码
2009/10/14 Javascript
如何确保JavaScript的执行顺序 之实战篇
2011/03/03 Javascript
关于js遍历表格的实例
2013/07/10 Javascript
jquery选择器之属性过滤选择器详解
2014/01/27 Javascript
jQuery循环滚动新闻列表示例代码
2014/06/17 Javascript
深入浅析javascript立即执行函数
2015/10/23 Javascript
JavaScript模块规范之AMD规范和CMD规范
2015/10/27 Javascript
Bootstrap精简教程
2015/11/27 Javascript
Markdown与Bootstrap相结合实现图片自适应属性
2016/05/04 Javascript
多功能jQuery树插件zTree实现权限列表简单实例
2016/07/12 Javascript
bootstrap弹出层的多种触发方式
2017/05/10 Javascript
bootstrap表单示例代码分享
2017/05/18 Javascript
全面解析Node.js 8 重要功能和修复
2017/06/02 Javascript
angular 服务随记小结
2019/05/06 Javascript
python获取一组汉字拼音首字母的方法
2015/07/01 Python
Python多线程下载文件的方法
2015/07/10 Python
Python使用sorted排序的方法小结
2017/07/28 Python
numpy实现合并多维矩阵、list的扩展方法
2018/05/08 Python
python的依赖管理的实现
2019/05/14 Python
python+selenium实现简历自动刷新的示例代码
2019/05/20 Python
python替换字符串中的子串图文步骤
2019/06/19 Python
keras分类之二分类实例(Cat and dog)
2020/07/09 Python
python如何随机生成高强度密码
2020/08/19 Python
Python 中如何写注释
2020/08/28 Python
python openssl模块安装及用法
2020/12/06 Python
运动会开幕式邀请函
2014/01/22 职场文书
大学生秋游活动方案
2014/02/17 职场文书
司机职责范本
2014/03/08 职场文书
大专生自荐书范文
2014/06/22 职场文书
珍惜资源的建议书
2014/08/26 职场文书
漂亮妈妈观后感
2015/06/08 职场文书
庆祝教师节新闻稿
2015/07/17 职场文书
关于开学的感想
2015/08/10 职场文书