Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从另一个日期间隔中减去一个日期间隔_Php_Date_Dateinterval - Fatal编程技术网

Php 从另一个日期间隔中减去一个日期间隔

Php 从另一个日期间隔中减去一个日期间隔,php,date,dateinterval,Php,Date,Dateinterval,如何制作$date1-$date2?我在谷歌上搜索了好几个小时。使用获取秒数,然后进行减法运算 $date1 = new DateInterval('PT100S'); //100 seconds $date2 = new DateInterval('PT20S'); //20 seconds 这就是你想要的吗?这应该适合你: 在这里,我只需从定义的$keys中获取两个DateInterval对象。这样我就可以在两个数组中循环并减去值。用计算出的值创建一个新对象,然后返回 echo $dat

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

使用获取秒数,然后进行减法运算

$date1 = new DateInterval('PT100S'); //100 seconds
$date2 = new DateInterval('PT20S');  //20 seconds

这就是你想要的吗?

这应该适合你:

在这里,我只需从定义的
$keys
中获取两个DateInterval对象。这样我就可以在两个数组中循环并减去值。用计算出的值创建一个新对象,然后返回

echo $date1->format('%s') - $date2->format('%s');

你尝试过什么或做过一些研究吗?是的,我在谷歌上搜索了好几个小时……仅供参考:在你尝试接受所有答案之前,你可以先接受答案谁对你帮助最大,谁解决了你的问题()。你不能。你得选一个。只要选择一个,你认为对你帮助最大并解决了你的问题
<?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));

?>
object(DateInterval)#3 (15) {
  //...
  ["s"]=>
  int(80)
  //...
}