Php 日期计算总天数
我有这段代码,它在某些日期运行良好,我不明白为什么,下面的代码应该计算总天数。如果我选择leavefrom=2014-04-21和leaveto=2014-05-02,则总共有8天,但应该是9天 这是日历:-Php 日期计算总天数,php,Php,我有这段代码,它在某些日期运行良好,我不明白为什么,下面的代码应该计算总天数。如果我选择leavefrom=2014-04-21和leaveto=2014-05-02,则总共有8天,但应该是9天 这是日历:- function total_day($leavefrom, $leaveto){ $start_date=strtotime($leavefrom); $cur_day=$start_date; $end_day=strtotime
function total_day($leavefrom, $leaveto){
$start_date=strtotime($leavefrom);
$cur_day=$start_date;
$end_day=strtotime($leaveto);
$count=0;
$holiday=array("2014-05-01"=>"Labour Day", "2014-08-31"=>"Independence Day", "2014-12-25"=>"Christmas");
while(1){
//echo date("Y/m/d", $cur_day)."<br/>";
$cur_day=$cur_day +(3600*24);
//echo $count."S--".date("Y-m-d", $cur_day)."<-----E--".$end_day;
$day_of_week=date('w', $cur_day);
//echo "day_of_week-----".$day_of_week."<br/>";
if ($day_of_week == 0 || $day_of_week == 6) {
//No Operation
}else if(array_key_exists(date("Y-m-d", $cur_day), $holiday)){
//echo "Holiday because of ".$holiday[date("Y-m-d", $cur_day)];
}else{
$count++;
}
//echo "Total day--".$count."<br/><br/>";
if(($cur_day==($end_day+(3600*24)))||($cur_day>$end_day)){
break;
}
}
//$count = $count + 1;
return $count;
}
$totaldays = total_day($leavefrom, $leaveto);
函数总天数($leavefrom,$leaveto){
$start_date=strottime($leavefrom);
$cur\u day=$start\u date;
$end_day=strotime($leaveto);
$count=0;
$holiday=数组(“2014-05-01”=>“劳动节”、“2014-08-31”=>“独立日”、“2014-12-25”=>“圣诞节”);
而(1){
//回音日期(“Y/m/d”,当前日期)。“
”;
$cur_day=$cur_day+(3600*24);
//echo$count.“S--”date(“Y-m-d”,“cur_day”)”我看不出有任何错误。从2014-04-21
到2014-05-02
有11天,其中有2个周末和1个假期(2014-05-01
),因此使11天-3天=8天
但如果您还想包括开始日期,则可以使用以下选项:
while(1){
if($cur_day>$end_day){
break;
}
$day_of_week=date('l', $cur_day);
if (in_array($day_of_week,array('Saturday','Sunday'))) {
// NO operation
}else if(array_key_exists(date("Y-m-d", $cur_day), $holiday)){
// NO operation
}else{
$count++;
}
$cur_day=$cur_day +(3600*24);
}
为什么不使用标准的DateTime::diff
(或date\u diff
)?看看这个来实现你所需要的:@TravelingTechGuy不,我不能,我需要从开始日期一直数到结束日期,如果我们计算它,它实际上会产生不同的值。很好。谢谢你的解决方案。