|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
怎么培养啊 别光说不练啊,好 ,比如新人入门自己步是配置环境,虽然现在都有很多的集成环境,但是真实的体验下配置环境还是会有很多帮助,不论是你以后工作还是在真实的linux下开发。 如今还有成绩
周一,周二不克不及做节沐日
能够算法上还有成绩,守候你的更新...
/**
* sports98
* flyruns@hotmail.com (接待交换)
*/
================
<html>
<head>
<title>盘算任务日(盘算一年内)</title>
</head>
<style type="text/CSS">
body,td {font-size:12px}
</style>
<body>
<form action="<?=$_SERVER[PHP_SELF]?>" method="post" name="form1">
<table cellpadding=0 cellspacing=0 border=0>
<tr><td colspan=2 height=30 align=center>任务日盘算器(盘算一年内)
<tr><td>入手下手日期:<td><input type="text" name="starttime" value="<?=date("Y")?>-01-01">
<tr><td>停止日期:<td><input type="text" name="endtime" value="<?=date("Y-m-d")?>">
<tr><td>周歇息数:<td><input type="text" size=1 name="rest" value="2">天 始休日:
<select name="restday">
<option value="1">礼拜一</option>
<option value="2">礼拜二</option>
<option value="3">礼拜三</option>
<option value="4">木曜日</option>
<option value="5">礼拜五</option>
<option value="6" selected>礼拜六</option>
<option value="7">礼拜七</option>
</select>
<tr><td valign=top>法定假期:<td>
<textarea name="ordainrest" rows=7>05-01&5
10-01&5</textarea>(&停止分隔)
<tr><td>出席天数:<td><input type="text" size=1 name="absent" value="0">天(告假等未任务日)
<tr><td>加班天数:<td><input type="text" size=1 name="overtime" value="0">天
<tr><td>补假天数:<td><input type="text" size=1 name="supplytime" value="0">天
<input type="submit" value="盘算数据">
</table>
</form>
<?php
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 "<br>出席天数:".$_POST[absent]."天";
echo "<br>加班日期:".$_POST[overtime]."天";
echo "<br>补沐日期:".$_POST[supplytime]."天";
echo "<br>法定假期:<br>";
$tmpa=explode("\n",$_POST[ordainrest]);
for($Tmpb=0;$Tmpb<count($tmpa);$Tmpb++){
$tmpc=explode("&",$tmpa[$Tmpb]);
echo " ".$tmpc[0]." 歇息 ".$tmpc[1]." 天<br>";
$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 "<h3>$starttime $endtime</h3>";
$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 "<h3>$runday $ctmp $_POST[restday] $fweek</h3>";
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 "<br>入手下手日期:".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 "<br>停止日期:".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 "<br>合计周末歇息:".$ttmpa."×".$_POST[rest]."=".$ttmpa*$_POST[rest]."天<span onclick=\"if(document.all['allweek'].style.display==''){this.innerHTML='(+)';document.all['allweek'].style.display='none';}else{this.innerHTML='(-)';document.all['allweek'].style.display='';}\" style=\"cursor:hand\">(+)</span>";
echo "<div id=\"allweek\" style=\"display:'none'\">";
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<br>";
}
echo "</div>";
if($fweek==6){//周六
}else if($fweek==0){//周日,则总歇息日仅仅去一天歇息日
$alltime+=1;//增添一天
}
$allcday=$ttmpa*$_POST[rest];//总的任务歇息日
$alltime-=$allcday;
echo "<hr size=1>无效的任务日:<font color=red>$alltime</font>";
}
?>
</body>
</html>
《PHP+MYSQL WEB开发(第三版)》号称圣经级,(也许是个不错的选择(声明:作者没给我啥好处费,我也不是书托,隔着大老远,我连他老兄的面都没见过的说-_-) |
|