php中多个数据类型时间的减法
我需要减去数据时间2次得到最后的时间,我得到这个“05:00”-“01:00”-“00:30”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
$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