首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将Php::DateInterval转换为秒?

如何将Php::DateInterval转换为秒?
EN

Stack Overflow用户
提问于 2014-12-03 17:22:28
回答 3查看 2.3K关注 0票数 3

所以,我减了两个日期:

代码语言:javascript
运行
复制
$d = $start->diff($end);

现在,我想以秒为单位获得日期(而不是second参数)。我知道它可以用一个本地Php函数来完成,但它只能在1970年以上工作。我知道我必须用format()方法操作,但我不明白.

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-12-03 18:31:00

您可以访问 class并对其做一些计算:

代码语言:javascript
运行
复制
$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年的问题):

代码语言:javascript
运行
复制
$seconds = $end->getTimestamp() - $start->getTimestamp();
票数 6
EN

Stack Overflow用户

发布于 2014-12-03 18:33:55

虽然我觉得应该有一个更好的方法,但下面的方法似乎是可行的。

代码语言:javascript
运行
复制
$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更早开始约会。

票数 3
EN

Stack Overflow用户

发布于 2020-10-25 16:27:46

如何使用类DateTime / DateTimeImmutable创建当前DateTime实例,然后使用add()方法添加DateInterval $d,然后使用getTimestamp()方法添加DateInterval$d。

代码语言:javascript
运行
复制
(new \DateTimeImmutable())->add($d)->getTimestamp()

要从现在开始获得秒数,只需减去time()即可。

代码语言:javascript
运行
复制
(new \DateTimeImmutable())->add($d)->getTimestamp() - \time()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27277845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档