首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从另一个DateInterval中派生出一个DateInterval

从另一个DateInterval中派生出一个DateInterval
EN

Stack Overflow用户
提问于 2015-05-29 19:27:29
回答 1查看 241关注 0票数 2
代码语言:javascript
运行
复制
$date1 = new DateInterval('PT100S'); //100 seconds
$date2 = new DateInterval('PT20S');  //20 seconds

如何制作$date1 - $date2?我在谷歌上搜索了好几个小时。

EN

回答 1

Stack Overflow用户

发布于 2015-05-29 19:57:34

这应该适用于你:

在这里,我只需从定义的array_intersect_key()中获得包含两个DateInterval对象的DateInterval。这样,我就可以用array_map()循环两个数组,并减去这些值。通过计算值,我创建了一个新的DateInterval对象,然后返回该对象。

代码语言:javascript
运行
复制
<?php

    $date1 = new DateInterval('PT100S');
    $date2 = new DateInterval('PT20S'); 

    function subtractDateIntervals($intervalOne, $intervalTwo) {
        $keys = ["y", "m", "d", "h", "i", "s"];

        $intervalArrayOne = array_intersect_key((array)$intervalOne, array_flip($keys));
        $intervalArrayTwo = array_intersect_key((array)$intervalTwo, array_flip($keys));

        $result = array_map(function($v1, $v2){
            return abs($v1 - $v2);
        }, $intervalArrayOne, $intervalArrayTwo);

        return new DateInterval(vsprintf("P%dY%dM%dDT%dH%dM%dS", $result));


    }       

    var_dump(subtractDateIntervals($date1, $date2));

?>

产出:

代码语言:javascript
运行
复制
object(DateInterval)#3 (15) {
  //...
  ["s"]=>
  int(80)
  //...
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30537612

复制
相关文章

相似问题

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