计算两个日期之间的总秒数的最佳方法是什么?到目前为止,我已经尝试了以下内容:
$delta = $date->diff(new DateTime('now'));
$seconds = $delta->days * 60 * 60 * 24;
然而,在当前的PHP5.3版本中,DateInterval对象的days
属性似乎被破坏了(至少在Windows中,它总是返回相同的6015
值)。我还试图以一种无法保留每个月的天数(四舍五入为30)、闰年等的方式来实现:
$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);
但我真的不喜欢使用这个半途而废的解决方案。
发布于 2010-07-05 08:01:00
你能不能不要比较time stamps?
$now = new DateTime('now');
$diff = $date->getTimestamp() - $now->getTimestamp()
发布于 2014-08-06 06:24:41
此函数允许您从DateInterval对象中获取以秒为单位的总持续时间
/**
* @param DateInterval $dateInterval
* @return int seconds
*/
function dateIntervalToSeconds($dateInterval)
{
$reference = new DateTimeImmutable;
$endTime = $reference->add($dateInterval);
return $endTime->getTimestamp() - $reference->getTimestamp();
}
发布于 2010-07-05 07:57:06
你可以这样做:
$currentTime = time();
$timeInPast = strtotime("2009-01-01 00:00:00");
$differenceInSeconds = $currentTime - $timeInPast;
time()返回自纪元时间(1970-01-01T00:00:00)以来的当前时间(以秒为单位),strtotime执行相同的操作,但基于给定的特定日期/时间。
https://stackoverflow.com/questions/3176609
复制相似问题