日期之间的差异计算不正确
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()
)。
另见
我有两个 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()
)。
另见