如何在DateTime中添加一秒然后检查差异PHP?

时间:2018-05-30 22:51:45

标签: php

只是想知道如何制作2个UTC DateTime对象。向其中一个添加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秒

我哪里错了?

2 个答案:

答案 0 :(得分:3)

你犯了三个错误:

1)你应该从datetime1构造$ datetime2,以确保你从完全相同的时间开始。

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

2)添加一秒钟使用&#39; S&#39;而不是&#39; M&#39; (代表分钟)

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

3)dateInterval中分钟的格式是%i而不是%m

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

答案 1 :(得分:1)

更改为

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

你将拥有:

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

https://ideone.com/ASGluQ