如何在日期时间中添加一秒,然后检查差异 PHP?



只是想知道如何制作 2 UTC 日期时间对象。将 1 秒添加到其中一个。然后比较它们,知道其中一个是未来的 1 秒。

我一直在尝试这个...

<?php
$datetime1 = new DateTime("now", new DateTimeZone("UTC"));
$datetime2 = new DateTime("now", new DateTimeZone("UTC"));
$datetime2 = $datetime2->add(new DateInterval('PT' . 1 . 'M'));

$diff=$datetime1->diff($datetime2); 
echo $diff->format('%d days, %m month, %y years, %m minutes, %s seconds');
预期 : 0 天, 0 个月, 0

年, 0 分钟, 1 秒

实际 : 0 天, 0 个月, 0 年, 0分钟, 0 秒

我哪里出错了?

你犯了三个错误:

1( 您应该从 datetime1 构造 $datetime 2,以确保您从完全相同的时间开始。

$datetime1 = new DateTime("now", new DateTimeZone("UTC"));
$datetime2 = new DateTime('@'.$datetime1->getTimestamp());

2(要添加一秒钟,请使用"S"而不是"M"(代表分钟(

$datetime2 = $datetime2->add(new DateInterval('PT' . 1 . 'S'));

3( 日期间隔中分钟的格式是 %i 而不是 %m

$diff=$datetime1->diff($datetime2); 
echo $diff->format('%d days, %m month, %y years, %i minutes, %s seconds');

更改为

$datetime2 = $datetime2->add(new DateInterval('PT' . 1 . 'S'));

您将拥有:

0 days, 0 month, 0 years, 0 minutes, 1 seconds

见 https://ideone.com/ASGluQ

最新更新