在 php 中将 DateInterval 对象转换为秒

2022-08-30 19:26:47
$datetime1 = date_create('2009-10-11');
$datetime2 = date_create('2009-10-13');
$interval = date_diff($datetime1, $datetime2);

如何在php中将上述内容转换为秒$interval


答案 1

获取间隔中的秒数的另一种方法是将其添加到零日期,并获取该日期的时间戳:

$seconds = date_create('@0')->add($interval)->getTimestamp();

此方法将或多或少正确地处理通过 DateInterval 构造函数创建的间隔,而 shiplu 的答案将忽略此类间隔的年、月和日。但是,shiplu 的答案对于通过减去两个日期创建的间隔更准确。对于仅由小时、分钟和秒组成的间隔,这两种方法都将获得正确的答案。


答案 2

有一个功能可以做到这一点。但它不会返回秒数。要获取秒数,请使用此技术format

$seconds = abs($datetime1->getTimestamp()-$datetime2->getTimestamp());

如果你真的想使用,你需要计算它。$interval

$seconds = $interval->days*86400 + $interval->h*3600 
           + $interval->i*60 + $interval->s;

这里

  • 86400是一天中的秒数
  • 3600是一小时内的秒数
  • 60是一分钟内的秒数

推荐