今天用 Lumen 框架写代码时, 也是初次体验 Lumen, 遇到了一个问题, 从数据库里查出的时间比数据库里保存的 TIMESTAMP 时间慢了8个小时, 很明显这是一个时区设置的问题, 本以为可以在1分钟内解决的, 但是我错了
根据 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
这样时间就正确了
相关推荐:
以上是Lumen timezone 时区设置方法的详细内容。更多信息请关注PHP中文网其他相关文章!

时区是指地球上一个地区所使用的标准时间。世界上共有24个时区,从UTC-12到UTC+14。在不同时区的国家之间旅行时,需要根据每个国家的时区来调整时间。PHP内置了一些时间函数,使得可以使用全球任何时区的时间。

随着移动互联网的快速发展和用户需求的变化,消息推送系统已成为现代应用程序不可或缺的一部分,它能够实现即时通知、提醒、推广、社交等功能,为用户和商业客户提供更好的体验和服务。为了满足这一需求,本文将介绍如何使用PHP框架Lumen开发一个高效的消息推送系统,提供及时的推送服务。一、Lumen简介Lumen是由Laravel框架开发团队开发的一个微框架,它是一个

标题:使用time.Unix函数将Unix时间戳转换为时间格式,并设置时区在Go语言中,我们经常需要将Unix时间戳转换为可读的时间格式,并且往往还需要考虑设置时区的问题。本文将向大家介绍如何使用time包中的Unix函数来完成这个任务,并且演示如何设置时区。首先,我们需要了解Unix时间戳的含义。Unix时间戳是一个以秒为单位的整数,表示从1970年1月1

PHP中如何使用Lumen框架Lumen是Laravel框架的简化版本,它专注于快速构建轻量级的微服务和API应用程序。Lumen是一个开源框架,由TaylorOtwell创建并维护。它以引人入胜的速度和性能闻名。在这篇文章中,我们将介绍如何在PHP中使用Lumen框架。1.安装和配置Lumen框架首先,您需要在您的系统中安装composer工具。Comp

小伙伴们知道腾讯会议预定会议怎么选择时区吗?今天小编就来讲解腾讯会议预定会议选择时区的方法,感兴趣的快跟小编一起来看看吧,希望能够帮助到大家。第一步:进入腾讯会议APP,点击预定会议(如图所示)。第二步:选择会议类型,如常规会议,点击下一步(如图所示)。第三步:在预定会议页面,点击时区(如图所示)。第四步:选择时区(如图所示)。第五步:设定成功,点击完成(如图所示)。

电脑是我们生活中和工作中的好帮手,电脑在使用了一段时间后,系统就会卡顿。此时,就需要重装系统来解决,那么台式电脑怎么安装系统呢?下面小编就和大家分享电脑如何安装系统的步骤吧。1、下后的系统格式ISO文件,将ISO文件和NT6安装器(可自行下载)复制到电脑除C盘以外的其他盘的根目录下,两个文件要在同一目录。2、打开NT6安装器,打开后出现如下图,选择模式2安装。3、重启后进入如下图,在启动选择菜单按下图选择进入。4、点击下一步进入,要全新安装,点击“自定义(高级)”选项。5、点击自定义高级后,出现

PHP是一种最流行的服务器脚本语言之一,用于Web开发,特别是动态网页开发。随着移动互联网的普及,时间戳在Web开发中也变得越来越常见,因此在PHP中将时间戳转换为特定格式的日期和时间可谓是一项非常重要的技能。本文将介绍如何在PHP中转换时间戳,以及时区设置。

php修改时区的方法:1、在配置文件中设置默认时区为东8区;2、通过代码“date_default_timezone_set('Asia/Shanghai');”设置时区;3、在PHP页面头中设置“date_default_timezone_set('PRC');”。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

SublimeText3汉化版
中文版,非常好用

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器