这个方法不是很好,但是可以解决你的问题
还有那个55是我硬写的,因为我用100来算,你那个60里的15我想不出怎么转成100里的55
将就着用吧,我测试过,可以用<?php$d1 = "08:00";
$d2 = "22:00";
$d11 = eregi_replace(":", "", $d1); //把时间格式转成数字
$d12 = $d11+100; //第1个数字+100作为“-”号后的第2个数字
$d22 = eregi_replace(":", "", $d2);
while ($d12<=$d22){
$d13 = $d12-55;
if (strlen($d13)<4){ //这里考虑到如果是0900-55的话会变成845,而我要的效果是
if (strlen($d11)<4){ //0845,所以加了个判断,如果字符串长度<4,就在头上加个0
$d11 = "0".$d11;
$d13 = "0".$d13;
}
else
$d13 = "0".$d13;
}
echo substr($d11, 0, 2) . ":" . substr($d11, 2, 2) . "-" . substr($d13, 0, 2) . ":" . substr($d13, 2, 2) . "<br>"; //转回日期格式
$d11 = $d11+100;
$d12 = $d12+100;
}?>
还有那个55是我硬写的,因为我用100来算,你那个60里的15我想不出怎么转成100里的55
将就着用吧,我测试过,可以用<?php$d1 = "08:00";
$d2 = "22:00";
$d11 = eregi_replace(":", "", $d1); //把时间格式转成数字
$d12 = $d11+100; //第1个数字+100作为“-”号后的第2个数字
$d22 = eregi_replace(":", "", $d2);
while ($d12<=$d22){
$d13 = $d12-55;
if (strlen($d13)<4){ //这里考虑到如果是0900-55的话会变成845,而我要的效果是
if (strlen($d11)<4){ //0845,所以加了个判断,如果字符串长度<4,就在头上加个0
$d11 = "0".$d11;
$d13 = "0".$d13;
}
else
$d13 = "0".$d13;
}
echo substr($d11, 0, 2) . ":" . substr($d11, 2, 2) . "-" . substr($d13, 0, 2) . ":" . substr($d13, 2, 2) . "<br>"; //转回日期格式
$d11 = $d11+100;
$d12 = $d12+100;
}?>
$d1 = '08:00';
$d2 = '22:00';
$h = 60;
$d3 = 15;//回调函数
function foo($r) {
return $r[1]*60+$r[2];
}
//转换时:分格式到分
$d1 = preg_replace_callback("/(\d+):(\d+)/","foo",$d1);
$d2 = preg_replace_callback("/(\d+):(\d+)/","foo",$d2);
//循环输出
for($i=$d1;$i<$d2;$i+=$h) {
printf("%02d:%02d - %02d:%02d<br>",floor($i/60),$i%60,floor(($i+$h-$d3)/60),($i+$h-$d3)%60);
}
?>