如何解决日期之间的差异计算不正确
我有两个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','fixedNowTime' => false
}
解决方法
如果要区分日期和时间,则没有理由创建新的DateTime
对象,尤其是不是仅基于时间的字符串,这将导致仅区分时间
仅对您已有的实例进行区分,它们分别从\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()
)。
另请参见
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。