php中多个数据类型时间的减法

php中多个数据类型时间的减法,php,Php,我需要减去数据时间2次得到最后的时间,我得到这个“05:00”-“01:00”-“00:30” $time1=新日期时间('05:00'); $time2=新日期时间('01:00'); $time3=新日期时间('00:30'); $result=$time1->diff($time2) 使用它,我可以从$time1和$time2中提取差异,但是我不能再次使用->diff,因为现在是dateInterval。如文档中所指定,它被定义为 DateTime::diff(DateTimeInterf

我需要减去数据时间2次得到最后的时间,我得到这个“05:00”-“01:00”-“00:30”

$time1=新日期时间('05:00');
$time2=新日期时间('01:00');
$time3=新日期时间('00:30');
$result=$time1->diff($time2)

使用它,我可以从$time1和$time2中提取差异,但是我不能再次使用->diff,因为现在是dateInterval。

如文档中所指定,它被定义为

DateTime::diff(DateTimeInterface$datetime2[,bool$absolute=FALSE]):DateInterval
,因此返回类型为
DateInterval

在PHP中实现减法还有其他正确答案:


一个可能的解决方案是直接使用DateInterval实例和DateTime::sub()方法

这个怎么样

$time1 = '05:00';
$time2 = '01:00';
$time3 = '00:30';

function str_to_minutes($str) {
    $arr = explode(':', $str);
    return (int)$arr[0] * 60 + (int)$arr[1];
}

function minutes_to_str($min) {
    echo sprintf("%02d:%02d", $min / 60, $min % 60);
}
echo minutes_to_str(str_to_minutes($time1) - str_to_minutes($time2) - str_to_minutes($time3));
//03:30

使用publicdateinterval::format(string$format):string这是否回答了您的问题?如上所述,提问者已经知道如何找出两个日期之间的差异。他的问题是如何从另一个时间中减去多个时间。所以这个答案没有帮助。
$time1 = '05:00';
$time2 = '01:00';
$time3 = '00:30';

function str_to_minutes($str) {
    $arr = explode(':', $str);
    return (int)$arr[0] * 60 + (int)$arr[1];
}

function minutes_to_str($min) {
    echo sprintf("%02d:%02d", $min / 60, $min % 60);
}
echo minutes_to_str(str_to_minutes($time1) - str_to_minutes($time2) - str_to_minutes($time3));
//03:30