我正在尝试使用DateTime(php> = 5.3)类来计算2日期之间的差异。
手册中的示例简单明了,我尝试了这个例子并且运行良好。 但如果更改开始日期和结束日期,则会出现问题:
$this->start_date = '2011-03-01';
$this->end_date = '2011-03-31';
var_dump($this->start_date, $this->end_date);
$datetime1 = new DateTime($this->start_date);
$datetime2 = new DateTime($this->end_date);
$interval = $datetime2->diff($datetime1);
echo $interval->format('%a total days')."\n";
echo $interval->format('%m month, %d days');
输出是:
30 total days //ok
1 month, 2 days //no! i think it should be 0 month, 30 days
随着游行不能很好地工作! :)
答案 0 :(得分:1)
二月份不是28天吗?由于某种原因,它可能会选择2月份的“月份”单位。该方法的PHP文档似乎表明这种事情很容易就是这种情况。说“x个月”并不过分有用,因为一个月不是固定单位,可能是28天,29天,30天或31天。
摘自下面的PHP dateinterval format documentation。
DateInterval :: format()方法可以 没有重新计算结转点数 时间字符串也不是日期段。 这是预期的,因为它不是 可能溢出像“32 天“可以解释为 从“1个月到4天”到 “1个月和1天”。