php工作日,计算工作日(jessie看)-PHP教程,PHP应用

现在还有问题

周一,周二不能做节假日

可能算法上还有问题,等待你的更新…

/**

* sports98

* flyruns@hotmail.com (欢迎交流)

*/

================

计算工作日(计算一年内)

body,td {font-size:12px}

工作日计算器(计算一年内)
开始日期:-01-01">
结束日期:">
周休息数:天 始休日:

星期一

星期二

星期三

星期四

星期五

星期六

星期七

法定假期:

05-01&5

10-01&5(&进行分隔)

缺席天数:天(请假等未工作日)
加班天数:
补假天数:

if(is_array($_post)){//有post数据

$starttime=date("z",mktime(0,0,0,substr($_post[starttime],5,2),substr($_post[starttime],8,2),substr($_post[starttime],0,4)));

$endtime=date("z",mktime(0,0,0,substr($_post[endtime],5,2),substr($_post[endtime],8,2),substr($_post[endtime],0,4)));

$alltime=$endtime-$starttime+1;

echo "自开始日期到结束日期,共:".$alltime."天";

echo "
缺席天数:".$_post[absent]."天";

echo "
加班日期:".$_post[overtime]."天";

echo "
补假日期:".$_post[supplytime]."天";

echo "
法定假期:
";

$tmpa=explode("\n",$_post[ordainrest]);

for($tmpb=0;$tmpb

$tmpc=explode("&",$tmpa[$tmpb]);

echo "          ".$tmpc[0]." 休息 ".$tmpc[1]." 天
";

$tmpsize=date("z",mktime(0,0,0,substr($tmpc[0],0,2),substr($tmpc[0],3,2),date("y")));//节假日的日期数据

if($tmpsize>=$starttime && $tmpsize<=$endtime){

$alltime=$alltime-$tmpc[1];//从总的工作日中去掉法定日期

}

}

//调试点

//    echo "

$starttime $endtime

";

$alltime-=$_post[absent];//扣除缺席天数

$alltime+=$_post[overtime];//加上加班日期

$alltime-=$_post[supplytime];//去掉补充的假期

//计算周休息日

$fweek=date("w",mktime(0,0,0,substr($_post[starttime],5,2),substr($_post[starttime],8,2),substr($_post[starttime],0,4)));//获得开始日期的周数

$eweek=date("w",mktime(0,0,0,substr($_post[endtime],5,2),substr($_post[endtime],8,2),substr($_post[endtime],0,4)));//结束周数

//这里要判断一下开始的星期天数(要求获得第一周的日期数)

if($fweek

$ctmp=abs($_post[restday]-$fweek);

$runday=date("d",mktime(0,0,0,substr($_post[starttime],5,2),$ctmp+substr($_post[starttime],8,2),substr($_post[starttime],0,4)));

//获得第一周的日期

}else{//再指定休息日后(e.g. $fwwk=6 $_post[restday]=2)

$ctmp=abs($fweek-$_post[restday]);

$runday=date("d",mktime(0,0,0,substr($_post[starttime],5,2),$ctmp+substr($_post[starttime],8,2),substr($_post[starttime],0,4)));

}

//调试点

//    echo "

$runday $ctmp $_post[restday] $fweek

";

for($ttmpa=0;;$ttmpa++){

//将当前的节假日向后推7日,进行判断  最终$ttmpa为节假日数

$cday=date("z",mktime(0,0,0,substr($_post[starttime],5,2),$runday+7*$ttmpa,substr($_post[starttime],0,4)));

if($cday>$endtime){

break;

}

}

echo "
开始日期:".date("y-m-d 星期w",mktime(0,0,0,substr($_post[starttime],5,2),substr($_post[starttime],8,2),substr($_post[starttime],0,4)));;

echo "
结束日期:".date("y-m-d 星期w",mktime(0,0,0,substr($_post[endtime],5,2),substr($_post[endtime],8,2),substr($_post[endtime],0,4)));;

echo "
共计周末休息:".$ttmpa."×".$_post[rest]."=".$ttmpa*$_post[rest]."天(+)";

echo "

";

for($ttmpa=0;$ttmpa

$dday=date("y-m-d 星期w",mktime(0,0,0,substr($_post[starttime],5,2),$runday+7*$ttmpa,substr($_post[starttime],0,4)));

echo "$dday
";

}

echo "

";

if($fweek==6){//周六

}else if($fweek==0){//周日,则总休息日仅仅去一天休息日

$alltime+=1;//增加一天

}

$allcday=$ttmpa*$_post[rest];//总的工作休息日

$alltime-=$allcday;

echo "


有效的工作日: $alltime";

}

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值