php - 3 天!= 72 小时,PHP 中的 DateInterval
问题描述
从 DateTime 对象中减去时间(小时)的简单任务让我感到疑惑。
我有一个 DateTime,就我而言2021-03-28 08:45。
我想从那个时间点回来 3 天。为此,我克隆了我的开始日期并减去了 3 天。
$startMinusDays = (clone $startDate)->sub(new DateInterval('P3D'));
这在理论上应该与这样做相同:
$startMinusHours = (clone $startDate)->sub(new DateInterval('PT72H'));
然而,2个结果是不同的:
日期 - 3 天 : 2021-03-25 08:45:00
日期 - 72 小时:2021-03-25 07:45:00
这是完整的 poc 代码:
这是一个完整的示例(https://3v4l.org/j94ae)
<?php
$startDate = date_create_from_format(
'Y-m-d H:i',
'2021-03-28 08:45',
new DateTimeZone("Europe/Madrid")
);
$startMinusDays = (clone $startDate)->sub(new DateInterval('P3D'));
$startMinusHours = (clone $startDate)->sub(new DateInterval('PT72H'));
echo "Date: : ".$startDate->format('Y-m-d H:i:s');
echo "\n";
echo "Date - 3 Days : ".$startMinusDays->format('Y-m-d H:i:s');
echo "\n";
echo "Date - 72 Hours: ".$startMinusHours->format('Y-m-d H:i:s');
我在这里想念什么?我觉得我站在软管上。
该计算似乎适用于我尝试的所有其他时间。
解决方案
推荐阅读
- powershell - 运行 AZ 命令的 Azure Functions
- c# - 过滤器配置在不同的窗口 C# WPF
- java - 如何将来自多个 Access 行的数据插入到 Java 中的单个多行字符串中
- swift - Swift ZSH 自动补全
- reactjs - npm 中是否有等效于“mvn 包”的内容?
- rabbitmq - RABBITMQ 向 LOGSTASH 发送消息
- cmake - 未知的 CMake 命令“CMAKE_DEPENDENT_OPTION”
- sql - 在 sql/oracle 中比较时间
- java - 有没有办法在没有 getter 方法的字段的情况下让 Spring 自定义验证器拒绝值?
- python - 将类“str”数组连接到数据框