在 PHP DateInterval 中计算总秒数

2022-08-30 07:23:10

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

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

但是,DateInterval 对象的属性在当前的 PHP5.3 版本中似乎已损坏(至少在 Windows 上,它始终返回相同的值)。我还尝试以一种无法在每个月(四舍五入到30),闰年等)中保留天数的方式做到这一点:days6015

$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);

但是我真的不满意使用这个半屁股的解决方案。


答案 1

你能不能比较时间戳

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

答案 2

此函数允许您从 DateInterval 对象获取总持续时间(以秒为单位)

/**
 * @param DateInterval $dateInterval
 * @return int seconds
 */
function dateIntervalToSeconds($dateInterval)
{
    $reference = new DateTimeImmutable;
    $endTime = $reference->add($dateInterval);

    return $endTime->getTimestamp() - $reference->getTimestamp();
}

推荐