所以,我减了两个日期:
$d = $start->diff($end);
现在,我想以秒为单位获得日期(而不是second
参数)。我知道它可以用一个本地Php函数来完成,但它只能在1970年以上工作。我知道我必须用format()
方法操作,但我不明白.
发布于 2014-12-03 18:31:00
您可以访问 class并对其做一些计算:
$seconds = $d->s + ($d->i * 60) + ($d->h * 3600) + ($d->d * 86400) + ($d->m * 2592000); // and so on
但是,一旦我们进入月份,就会有+/- 2天的方差,除非我们坚持一个月的任意定义为2592000 secs
(30天)。
您还可以使用两个UNIX时间戳与DateTime对象之间的差异(但最终会遇到日期不足1970年的问题):
$seconds = $end->getTimestamp() - $start->getTimestamp();
发布于 2014-12-03 18:33:55
虽然我觉得应该有一个更好的方法,但下面的方法似乎是可行的。
$dateIntrvl = $start->diff($end);
$days = $dateIntrvl->format('%a');
$hours = $dateIntrvl->format('%h');
$mins = $dateIntrvl->format('%i');
$secs = $dateIntrvl->format('%s');
$totalSeconds = ($days * 24 * 60 * 60) + ($hours * 60 * 60) + ($mins * 60) + $secs;
是的,它似乎比1970
更早开始约会。
发布于 2020-10-25 16:27:46
如何使用类DateTime / DateTimeImmutable创建当前DateTime实例,然后使用add()方法添加DateInterval $d,然后使用getTimestamp()方法添加DateInterval$d。
(new \DateTimeImmutable())->add($d)->getTimestamp()
要从现在开始获得秒数,只需减去time()即可。
(new \DateTimeImmutable())->add($d)->getTimestamp() - \time()
https://stackoverflow.com/questions/27277845
复制相似问题