将DateInterval对象转换为php中的秒数

san*_*a26 17 php time date seconds

$datetime1 = date_create('2009-10-11');
$datetime2 = date_create('2009-10-13');
$interval = date_diff($datetime1, $datetime2);
Run Code Online (Sandbox Code Playgroud)

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

Bri*_*and 36

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

$seconds = date_create('@0')->add($interval)->getTimestamp();
Run Code Online (Sandbox Code Playgroud)

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

  • @MaxiWheat假设时间间隔是通过从2015-03-01减去2015-02-01创建的.这是一个月的差异,恰好相当于28天.Shiplu的方法将此视为28天的间隔,而我的方法将其视为一个月的间隔,任意选择1月作为月,并根据1月的31天产生时间戳. (4认同)

Shi*_*dim 24

这有一个功能format.但它不会返回秒数.要获得使用此技术的秒数

$seconds = abs($datetime1->getTimestamp()-$datetime2->getTimestamp());
Run Code Online (Sandbox Code Playgroud)

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

$seconds = $interval->days*86400 + $interval->h*3600 
           + $interval->i*60 + $interval->s;
Run Code Online (Sandbox Code Playgroud)

这里

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