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

相关推荐
cwtlw16 分钟前
JavaRedis和数据库相关面试题
java·数据库·笔记·面试
Wo3Shi4七39 分钟前
MySQL底层原理(第一期)
数据库·后端·mysql
镜舟科技41 分钟前
迈向云原生:理想汽车 OLAP 引擎变革之路
大数据·数据库·云原生
山山而川粤1 小时前
SSM考研信息查询系统
java·大数据·运维·服务器·开发语言·数据库·考研
Arbori_262151 小时前
oracle常用sql
数据库·sql·oracle
EQ-雪梨蛋花汤1 小时前
【工具】在 Visual Studio 中使用 Dotfuscator 对“C# 类库(DLL)或应用程序(EXE)”进行混淆
数据库·ide·visual studio
阿ฅ( ̳• ε • ̳)ฅ2 小时前
C#窗体应用程序连接数据库
开发语言·数据库·c#
光军oi4 小时前
Mysql从入门到精通day5————子查询精讲
android·数据库·mysql
qr9j422336 小时前
Django自带的Admin后台中如何获取当前登录用户
数据库·django·sqlite
cherry52306 小时前
【PostgreSQL】【第4章】PostgreSQL的事务
数据库·postgresql