php获取时间和MongoDB保存时间不一致

最近遇到了问题,php获取的时间和在MongoDB中查看的时间差了8小时,原因是:

PHP 与 MongoDB 的默认时区设置不同

  • PHP 默认可能使用服务器的本地时区,或者是在 PHP 配置文件(php.ini)中设置的时区。(服务器默认的是Asia/Shanghai)
  • MongoDB 默认将时间存储为 UTC 时间。这意味着如果你在不进行任何时区转换的情况下将时间从 PHP 保存到 MongoDB,时间将自动转换为 UTC 时间。

最后导致的Navicat中查看的时候,MongoDB获取的时间是UTC格式的。不过后面使用php代码读取的时候,自动转化为Asia/Shanghai,所以问题不大。不用做特殊的处理。

以下是一个示例代码,演示如何将 UTC 时间转换为 Asia/Shanghai 时区的时间:

php 复制代码
<?php
// 假设 $utcTime 是一个包含 UTC 时间的字符串,例如 "2023-12-01 09:04:21"
$utcTime = "2023-12-01 09:04:21";

// 创建一个代表 UTC 时间的 DateTime 对象
$utcDateTime = new DateTime($utcTime, new DateTimeZone('UTC'));

// 设置时区为 'Asia/Shanghai'
$shanghaiTimeZone = new DateTimeZone('Asia/Shanghai');
$utcDateTime->setTimezone($shanghaiTimeZone);

// 格式化并打印 'Asia/Shanghai' 时间
$shanghaiTime = $utcDateTime->format("Y-m-d H:i:s");
echo $shanghaiTime;
?>

打印出来的是:2023-12-01 17:04:21

相关推荐
m0_74855481几秒前
SQL注入的安全架构设计_将数据库置于内网隔离区
jvm·数据库·python
许彰午12 分钟前
CacheSQL:一个面向政务系统的内存缓存数据库中间件
java·数据库·缓存·中间件·面试·开源软件·政务
iAm_Ike16 分钟前
怎么关闭MongoDB不需要的HTTP管理接口及REST API
jvm·数据库·python
whn197723 分钟前
虚拟机搭建oracle 19c rac 点滴
数据库·oracle
m0_7411733326 分钟前
CSS移动端实现卡片悬浮投影_利用box-shadow设置层次感
jvm·数据库·python
Lyyaoo.27 分钟前
Session粘滞性问题->Redis实现session共享
数据库·redis·缓存
珠海西格电力28 分钟前
零碳园区管理系统“云-边-端”架构协同的价值及具体案例
大数据·数据库·人工智能·架构·能源
sinat_3834373629 分钟前
如何在 Laravel 中筛选并格式化匹配预定义列表的产品数据
jvm·数据库·python
2401_8463395630 分钟前
mysql如何用执行流程思维写好SQL_SQL优化方法总结
jvm·数据库·python
鸽芷咕32 分钟前
KingbaseES数据库设计规范与SQL开发最佳实践
数据库·sql·设计规范