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

相关推荐
这个DBA有点耶14 小时前
从症状到根因:数据库监控指标的分层方法与静态/动态阈值策略
数据库·mysql·代码规范
SelectDB14 小时前
时间旅行与快照能力速查:Doris 侧三条落地路径
大数据·数据库·数据分析
SelectDB14 小时前
云数仓成本结构拆解速查:五层计费 vs Doris / 托管形态
大数据·数据库·数据分析
SelectDB14 小时前
什么场景能承接与建议保留:Doris vs Snowflake 边界速查
大数据·数据库·数据分析
这个DBA有点耶16 小时前
DELETE没删多少数据,表却越来越大——InnoDB删除空洞与页合并失效的根因
数据库·mysql·代码规范
ly768919 小时前
PostgreSQL 备份恢复策略:pg_basebackup、WAL 归档与 PITR 在企业 Java 系统中的落地
java·数据库·postgresql·pitr·pg_basebackup·wal 归档
小羊没烦恼!20 小时前
Ajax与JSON的一些总结
android·java·前端·数据库·mysql·算法·okhttp
注塑机数据采集联网20 小时前
如何解决注塑机数据采集联网对接MES系统数据WiFi传输数据不稳问题
大数据·数据库·物联网·数据挖掘·数据分析
黄俊懿20 小时前
【架构师从入门到进阶】第六章:服务集群优化——第八节:线程数公式
java·服务器·数据库·分布式·性能优化·架构·系统架构