在网上找到的函数,是可以比较时间,但不是我想要的效果:
我要判断的是小时差,不要理会分秒举例:我从网上找到的PHP DateDiff函数
function DateDiff($part, $begin, $end)
{
$diff = strtotime($end) - strtotime($begin);
switch($part)
{
case "y": $retval = bcdiv($diff, (60 * 60 * 24 * 365)); break;
case "m": $retval = bcdiv($diff, (60 * 60 * 24 * 30)); break;
case "w": $retval = bcdiv($diff, (60 * 60 * 24 * 7)); break;
case "d": $retval = bcdiv($diff, (60 * 60 * 24)); break;
case "h": $retval = bcdiv($diff, (60 * 60)); break;
case "n": $retval = bcdiv($diff, 60); break;
case "s": $retval = $diff; break;
}
return $retval;
}用法:
DateDiff(h,"2010-04-29 16:11:20","2010-04-29 17:10:20")
这样出来的结果还是0,一定要后面那个日期的分秒数也超过前面的,才会显示为1我想要的效果是,不理会分秒数,只要小时17大于16,结果就为1,请问要怎么办呢?
我要判断的是小时差,不要理会分秒举例:我从网上找到的PHP DateDiff函数
function DateDiff($part, $begin, $end)
{
$diff = strtotime($end) - strtotime($begin);
switch($part)
{
case "y": $retval = bcdiv($diff, (60 * 60 * 24 * 365)); break;
case "m": $retval = bcdiv($diff, (60 * 60 * 24 * 30)); break;
case "w": $retval = bcdiv($diff, (60 * 60 * 24 * 7)); break;
case "d": $retval = bcdiv($diff, (60 * 60 * 24)); break;
case "h": $retval = bcdiv($diff, (60 * 60)); break;
case "n": $retval = bcdiv($diff, 60); break;
case "s": $retval = $diff; break;
}
return $retval;
}用法:
DateDiff(h,"2010-04-29 16:11:20","2010-04-29 17:10:20")
这样出来的结果还是0,一定要后面那个日期的分秒数也超过前面的,才会显示为1我想要的效果是,不理会分秒数,只要小时17大于16,结果就为1,请问要怎么办呢?
date('H',date('YmdH',$time)-date('YmdH',$以前时间));// 这样可以吧,笨方法一个
DateDiff(h,"2010-04-29 16:11:20","2010-04-29 17:10:20")
两者的时间差本身就不到1小时。
DateDiff(h,"2010-04-29 15:11:20","2010-04-29 17:10:20")
这样就是返回的就是1了。
如果你想把小数进位,不到1小时也算成1小时。
case "h": $retval = ceil(bcdiv($diff, (60 * 60), 1)); break;
或者你想取到小数:
case "h": $retval = bcdiv($diff, (60 * 60),1); break;
后面加的1表示小数位数。
$a="2010-04-29 17:10:20";
$b="2010-04-29 15:11:20";
function time_min($a,$b)
{
$a_arry=explode(" ",$a);
$a_arry2=explode(":",$a_arry[count($a_arry)-1]); //a的時間. $b_arry=explode(" ",$b);
$b_arry2=explode(":",$b_arry[count($b_arry)-1]);
return $a_arry2[0]-$b_arry2[0];
}
echo time_min($a,$b);给分谢谢.
$a="2010-04-29 17:10:20";
$b="2010-04-29 15:11:20";
echo date("H",strtotime($a))-date("H",strtotime($b));
$start = "2010-04-29 16:11:20";
$end = "2010-04-29 17:10:20";
$timetamp = strtotime(date("Y-m-d H:00:00",strtotime($end)))-strtotime(date("Y-m-d H:00:00",strtotime($start)));
echo date("g",$timetamp);//1
$timetamp = strtotime(date("Y-m-d H:00:00",strtotime($end)))-strtotime(date("Y-m-d H:00:00",strtotime($start)));
echo $timetamp/3600;
}
$start = "2010-04-29 16:11:20";
$end = "2010-04-29 17:10:20";//2010-04-30 17:10:20
countHour($start, $end)
解决!你的最历害,呵呵
不过你那个echo把我给搞死了,呵呵,我写这样的时候if(countHour($start, $end)>0)程序不正常,后来才发现echo应换成return