ホームページ > php教程 > php手册 > 稼働日を計算する (jessie を参照)

稼働日を計算する (jessie を参照)

WBOY
リリース: 2016-06-21 09:11:53
オリジナル
1577 人が閲覧しました

現在も問題が発生しています
月曜日と火曜日を祝日にすることはできません
アルゴリズムに問題がある可能性がありますので、アップデートをお待ちください...
/**
* sports98
* flyruns@hotmail.com (コミュニケーションへようこそ)
*/
=========== ===== ==


稼働日の計算(1年以内で計算)





営業日計算ツール(1年以内で計算)
< ;td>開始日:< ;td>毎週の休日:
-01-01" >
終了日:
">
日数 最初の休日:
<名前を選択="休息日">






法定休日:
<テキストエリア名=" ordainrest" rows=7>05-01&5
10-01&5(& Separated)
欠勤日数: 日数 (休暇およびその他の未使用の労働日)
残業日数:


if(is_array($ _POST)){//POST データがあります
$starttime=date("z",mktime(0,0,0,substr($_POST[starttime],5,2),substr($_POST[starttime],8 ,2),substr($_POST[開始時刻],0,4)));
$endtime=date("z",mktime(0,0,0,substr($_POST[終了時刻],5,2), substr($_POST[endtime],8 ,2),substr($_POST[endtime],0,4)));
$alltime=$endtime-$starttime+1;
echo "開始日から終了日まで日付、合計: ".$alltime." days ";
echo "
欠勤日数: ".$_POST[absent]."days";
echo "
残業日: "。 $_POST[残業]."days";
echo "
代休日: ".$_POST[支給時間]."day";
echo "
法定休日:
";
$tmpa=explode("n",$_POST[ordainrest] ); または for ($ tmpb = 0; $ tmpb & lt; count ($ tMPa); $ tmpb ++) {
$ tmpc = Explode ("&" , $ tmpa [$ tmpb]);
echo ". ]." 日
";
            $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<$_POST[restday]){//不是休息日(指定的工作休息日),在指定休息日前
$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<$ttmpa;$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){//Saturday
}else if($fweek==0){//日曜日は、合計の休み日は 1 日だけになります
$alltime+=1;/ /1 日追加します
}
$allcday=$ttmpa*$_POST[rest];// 総休日数
$alltime-=$allcday;
echo "
有効な営業日: < font color=red>$alltime";
}
?>




関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート