【发布时间】:2014-01-06 22:00:37
【问题描述】:
我正在尝试添加与 php 日期时间对象的差异,但我做错了。我得到了我期望的时差:
$total = 00:11:33 $accumulator = 00:05:47
但是如何添加 DateIntervals?还是我只是创建一个新的 dateTime 对象并添加到它?
$total = new DateInterval('P0000-00-00T00:00:00');
$accumulator = new DateInterval('P0000-00-00T00:00:00');
$a = new DateTime('2014-01-05 00:01:38');
$b = new DateTime('2014-01-05 00:13:11');
$c = new DateTime('2014-01-05 00:18:58');
$d = new DateTime('2014-01-05 00:24:45');
$total = $a->diff($b);
$accumulator = $c->diff($d);
echo '$total = ' . $total->format("%H:%I:%S");
echo '$accumulator = ' . $accumulator->format("%H:%I:%S");
$total += $accumulator;
echo 'Grand Total = ' . $total->format("%H:%I:%S");
【问题讨论】:
-
你用错了
->format()。它不使用%作为其格式字符,I将对应于 DST-in-effect 标志,而不是分钟。你想要->format('H:i:s')。S也是2nd/3rd/4th后缀。..s(小写)是秒。 -
你为什么要用
new DateInterval初始化$total和accumulator,而你只是要用diff的结果替换它们? -
您不能将
DateInterval与+添加。看起来根本不可能添加DateInterval。您只能将它们添加到DateTime。我认为这是因为月份和年份等间隔取决于您从哪里开始,因为月份长度和闰年不同。 -
感谢您的帮助。 Barmar,我在这里的 PHP 文档中找到了 DateInterval 的格式:link。我想我将使用时间设置为 00:00 的新日期对象并添加到它。我只需要总时间,它会少于 23 小时 59 分钟,所以我想这会奏效。