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

相关推荐
小吴编程之路19 分钟前
MySQL 索引核心特性深度解析:从底层原理到实操应用
数据库·mysql
~莫子29 分钟前
MySQL集群技术
数据库·mysql
凤山老林39 分钟前
SpringBoot 使用 H2 文本数据库构建轻量级应用
java·数据库·spring boot·后端
就不掉头发1 小时前
Linux与数据库进阶
数据库
与衫1 小时前
Gudu SQL Omni 技术深度解析
数据库·sql
咖啡の猫1 小时前
Redis桌面客户端
数据库·redis·缓存
oradh1 小时前
Oracle 11g数据库软件和数据库静默安装
数据库·oracle
what丶k2 小时前
如何保证 Redis 与 MySQL 数据一致性?后端必备实践指南
数据库·redis·mysql
_半夏曲2 小时前
PostgreSQL 13、14、15 区别
数据库·postgresql
把你毕设抢过来2 小时前
基于Spring Boot的社区智慧养老监护管理平台(源码+文档)
数据库·spring boot·后端