阿瑞 2007-8-30 08:15
PHP计算休息日的函数
[code]//===== 计算某段时间的休息日天数 www.zhongfly.com 20070808 =====
function attendance($DATE1,$DATE2)
{
/******计算某段时间内的休息日天数*********
** by www.zhongfly.com 阿瑞 QQ:66811363
**
** $DATE1 起始日期
** $DATE2 截止日期
**
******************************************/
//----- 法定假日计算 -----
$starttime=date("z",mktime(0,0,0,substr($DATE1,5,2),substr($DATE1,8,2),substr($DATE1,0,4)));
$endtime=date("z",mktime(0,0,0,substr($DATE2,5,2),substr($DATE2,8,2),substr($DATE2,0,4)));
$tmpa=explode(",",$ordainrest);
for($Tmpb=0;$Tmpb<COUNT($TMPA);$TMPB++){
$tmpc=explode("&",$tmpa[$Tmpb]);
$tmpsize=date("z",mktime(0,0,0,substr($tmpc[0],0,2),substr($tmpc[0],3,2),date("Y")));//节假日的日期数据
if($tmpsize>=$starttime && $tmpsize<=$endtime){
//----- 扣除法定假日内的双休日天数 -----
$date111=date("Y");
$date111="$date111-$tmpc[0]";
$d333=substr($date111,8,2); //日
$d222=substr($date111,5,2); //月
$d111=date("Y"); //年
$date222 = date( "Y-m-d", mktime(0,0,0,$d222,$d333+$tmpc[1],$d111));
//----- 计算开始日期和结束日期所在周的最后一天(周日)是哪一天yyyy-mm-dd。 -----
$w_last111 =date("Y-m-d",strtotime("Sunday",strtotime($date111)));
$w_last222 =date("Y-m-d",strtotime("Sunday",strtotime($date222)));
$DATE111=strtotime($w_last111);
$DATE222=strtotime($w_last222);
$DATE_COUNT111=$DATE222-$DATE111;
$DATE_COUNT111=round($DATE_COUNT111/3600/24);
$restdays111=$DATE_COUNT111/7*2;
//----- 计算开始日期和结束日期分别对应的星期。 -----
$dateArr111 = explode("-", $date111);
$week_is111 = date("w", mktime(0,0,0,$dateArr111[1],$dateArr111[2],$dateArr111[0]));
$dateArr222 = explode("-", $date222);
$week_is222 = date("w", mktime(0,0,0,$dateArr222[1],$dateArr222[2],$dateArr222[0]));
if($week_is111==0)
$restdays111-=1;
if($week_is222==0)
$restdays111+=1;
$ordaindays+=$tmpc[1]-$restdays111;
}
}
//----- 双休日计算 -----
//----- 计算开始日期和结束日期所在周的最后一天(周日)是哪一天yyyy-mm-dd。 -----
$w_last1 =date("Y-m-d",strtotime("Sunday",strtotime($DATE1)));
$w_last2 =date("Y-m-d",strtotime("Sunday",strtotime($DATE2)));
$DATE11=strtotime($w_last1);
$DATE22=strtotime($w_last2);
$DATE_COUNT=$DATE22-$DATE11;
$DATE_COUNT=round($DATE_COUNT/3600/24);
$restdays=$DATE_COUNT/7*2;
//----- 计算开始日期和结束日期分别对应的星期。 -----
$dateArr1 = explode("-", $DATE1);
$week_is1 = date("w", mktime(0,0,0,$dateArr1[1],$dateArr1[2],$dateArr1[0]));
$dateArr2 = explode("-", $DATE2);
$week_is2 = date("w", mktime(0,0,0,$dateArr2[1],$dateArr2[2],$dateArr2[0]));
if($week_is1==0)//如果开始日期是周日,休息日减1。
$restdays-=1;
if($week_is2==0)//如果结束日期是周日,休息日加1。
$restdays+=1;
$total_restdays=$ordaindays+$restdays;
return $total_restdays;
}[/code]
好想好想 2008-3-9 17:43
在这个论坛好像很少看到PHP的相关帖子,做为一名PHP学习者,我应该顶楼主一下.