日期之间的差异计算不正确

Diff between dates calculates incorrect

我有两个 dateTime 字段,我想找出它们之间的区别。然而,我的结果比他们应该的要少。我看过示例,代码看起来不错。

    $entryTime = new \DateTime($journalEntry->entry_date_time->toTimeString());
    $closeTime = new \DateTime($journalEntry->close_date_time->toTimeString());
    $interval = $entryTime->diff($closeTime);

    debug($journalEntry->entry_date_time);
    debug($journalEntry->close_date_time);
    echo $interval->format('%d days %h hours %m minutes');

我有 0 天 11 小时 0 分钟

/src/Controller/JournalEntriesController.php (line 145)
object(Cake\I18n\FrozenTime) {

    'time' => '2020-09-05 07:49:04.000000+00:00',
    'timezone' => 'UTC',
    'fixedNowTime' => false

}
/src/Controller/JournalEntriesController.php (line 146)
object(Cake\I18n\FrozenTime) {

    'time' => '2020-09-07 19:36:53.000000+00:00',
    'timezone' => 'UTC',
    'fixedNowTime' => false

}

如果您想区分日期 时间,则没有理由创建新的 DateTime 对象,尤其是 time-only 字符串,只会导致时间差异。

简单地比较您已经拥有的实例,它们分别从 \DateTime\DateTimeImmutable 扩展:

$interval = $journalEntry->entry_date_time->diff($journalEntry->close_date_time);
echo $interval->format('%d days %h hours %i minutes');

并且如评论中所述,m 代表几个月,the pattern character 代表分钟 i

CakePHP 的日期时间对象还提供了额外的差异功能,用于获取特定单位(diffInHours()diffInMinutes() 等)或人类可读格式(diffForHumans())。

另见