一尘不染

计算PHP DateInterval中的总秒数

php

计算两个日期之间总秒数的最佳方法是什么?到目前为止,我已经尝试了以下方法:

$delta   = $date->diff(new DateTime('now'));
$seconds = $delta->days * 60 * 60 * 24;

但是,days在当前的PHP5.3版本中,DateInterval对象的属性似乎已损坏(至少在Windows上,它总是返回相同的6015值)。我还尝试过这样做,无法保留每个月的天数(四舍五入到30),leap年等:

$seconds = ($delta->s)
         + ($delta->i * 60)
         + ($delta->h * 60 * 60)
         + ($delta->d * 60 * 60 * 24)
         + ($delta->m * 60 * 60 * 24 * 30)
         + ($delta->y * 60 * 60 * 24 * 365);

但是我真的不满意使用这种半成品解决方案。


阅读 243

收藏
2020-05-29

共1个答案

一尘不染

您可以不比较时间戳吗?

$now = new DateTime('now');
$diff = $date->getTimestamp() - $now->getTimestamp()
2020-05-29