PHP ,计算从今天 花费12个工作日完成一个工作,那么实际经过多少天如何计算呢 $start = time(); //开始时间戳X$cost = 12; //花费工作日工作制是6天我想得到实际经过了多少天才完成这个任务等于加上了周日 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <?phpheader('content-type:text/html;charset=utf-8');ini_set('date.timezone','asia/shanghai');$start = time(); //开始时间戳X$cost = 12; //花费工作日$workday = array(1,2,3,4,5,6); //1~6工作list($alldays, $enddate) = getAllday($start, $cost, $workday);echo '总需要日数:'.$alldays.'<br>';echo '最后工作日:'.$enddate;function getAllDay($start, $cost, $workday){ // 需要多少天 $days = 0; $curday = $start; // 获取当前是星期几 while($cost>0){ if(in_array(date('w',$curday),$workday)){ //是工作日 $cost--; } $days++; if($cost>0){ $curday = mktime(0,0,0,date('m',$curday),date('d',$curday)+1,date('Y',$curday)); } } return array($days, date('Y-m-d',$curday));}?> $start = time(); //开始时间戳X$cost = 12; //花费工作日$w = date('w', $start);$nostart = array(0); //非工作日 工作制是6天$t = 0;while($cost--) { $t++; $w = ($w + 1) % 7; if(in_array($w, $nostart)) $t++;}echo $t; //14 $start = time();//开始时间戳X$cost = 12;$real_day = 0;//实际天数for($i = 0;$i < $cost;++$i){ if(date('w',$start + $i * 3600 * 24) == 6){//遇到周日,实际天数加一 ++$real_day; } ++$real_day;}echo $real_day; echo $cost + floor($cost/6); 这样行不? echo $cost + floor($cost/6); 这样行不?你试试。 这个不是很看得懂,如果工作制是一个变量$workday,值是5 或者 6 怎么写呢 是数组编程array(0,1) 么 $w = date('w', $start); //得到的周几,周日为0$nostart = array(0); //非工作日数组记录的是非工作日的星期数,比如 array(0, 6) 表示周日、周六 echo $cost + floor($cost/6); 这样行不?你试试。结果应该是对的吧,觉得这样简单很多。 echo $cost + floor($cost/6); 这样行不?你试试。结果应该是对的吧,觉得这样简单很多。如果周一,周五是放假呢? 你这样反问是不行的这样是14天1 2 3 4 5 6 01 2 3 4 5 6 01 2 3 4 5 6 0这样就是13天了1 2 3 4 5 6 01 2 3 4 5 6 0所以简单的 echo $cost + floor($cost/6); 是不行的况且 $cost 也不一定就是 12,要是 10 或者 15 呢 你这样反问是不行的这样是14天1 2 3 4 5 6 01 2 3 4 5 6 01 2 3 4 5 6 0这样就是13天了1 2 3 4 5 6 01 2 3 4 5 6 0所以简单的 echo $cost + floor($cost/6); 是不行的况且 $cost 也不一定就是 12,要是 10 或者 15 呢哦哦,明白了,确实是我想的太简单了。谢谢! echo $cost + floor($cost/6); 这样行不?你试试。结果应该是对的吧,觉得这样简单很多。如果周一,周五是放假呢? $start = strtotime("2015-10-03 16:00:10");; //开始时间戳X$cost = 6; //花费工作日$w = date('w', $start);$nostart = array(0,6); //非工作日 工作制是6天$t = 0;while($cost--) { $t++; $w = ($w + 1) % 7; if(in_array($w, $nostart)) $t++;}echo $t;我这样写,但是我带入的是2015年10月3日,从一个周六开始计算,如果是5天工作制,要完成6个工作日的工作,我需要加上10月3日当天,共计10天,也就是12号做完,但是这个算出来是7天,请问咋改呢 为什么$up只能到1 SQL查询问题 求助,gzinflate解密 请高手帮忙写一个正则表达式,谢谢! php如何实现论坛短信提示 ajaxFileUpload 上传不了文件 怎么计算数组中的元素个数!急!! php中有没有得到昨天时间串的函数??? php 兼职招聘!(上海) 为什么无法关键外部样式?新手自学,有没有老鸟指点下 php 配置相关问题 php 存取sql server中image类型的图片
<?php
header('content-type:text/html;charset=utf-8');
ini_set('date.timezone','asia/shanghai');$start = time(); //开始时间戳X
$cost = 12; //花费工作日
$workday = array(1,2,3,4,5,6); //1~6工作list($alldays, $enddate) = getAllday($start, $cost, $workday);
echo '总需要日数:'.$alldays.'<br>';
echo '最后工作日:'.$enddate;function getAllDay($start, $cost, $workday){ // 需要多少天
$days = 0; $curday = $start; // 获取当前是星期几
while($cost>0){
if(in_array(date('w',$curday),$workday)){ //是工作日
$cost--;
}
$days++;
if($cost>0){
$curday = mktime(0,0,0,date('m',$curday),date('d',$curday)+1,date('Y',$curday));
}
} return array($days, date('Y-m-d',$curday));
}
?>
$cost = 12; //花费工作日
$w = date('w', $start);
$nostart = array(0); //非工作日 工作制是6天
$t = 0;
while($cost--) {
$t++;
$w = ($w + 1) % 7;
if(in_array($w, $nostart)) $t++;
}
echo $t; //14
$start = time();//开始时间戳X
$cost = 12;
$real_day = 0;//实际天数
for($i = 0;$i < $cost;++$i){
if(date('w',$start + $i * 3600 * 24) == 6){//遇到周日,实际天数加一
++$real_day;
}
++$real_day;
}
echo $real_day;
echo $cost + floor($cost/6); 这样行不?
echo $cost + floor($cost/6); 这样行不?你试试。
这个不是很看得懂,如果工作制是一个变量$workday,值是5 或者 6 怎么写呢
记录的是非工作日的星期数,比如 array(0, 6) 表示周日、周六
echo $cost + floor($cost/6); 这样行不?你试试。结果应该是对的吧,觉得这样简单很多。
echo $cost + floor($cost/6); 这样行不?你试试。结果应该是对的吧,觉得这样简单很多。如果周一,周五是放假呢?
1 2 3 4 5 6 0
1 2 3 4 5 6 0
1 2 3 4 5 6 0
这样就是13天了
1 2 3 4 5 6 0
1 2 3 4 5 6 0
所以简单的 echo $cost + floor($cost/6); 是不行的
况且 $cost 也不一定就是 12,要是 10 或者 15 呢
1 2 3 4 5 6 0
1 2 3 4 5 6 0
1 2 3 4 5 6 0
这样就是13天了
1 2 3 4 5 6 0
1 2 3 4 5 6 0
所以简单的 echo $cost + floor($cost/6); 是不行的
况且 $cost 也不一定就是 12,要是 10 或者 15 呢哦哦,明白了,确实是我想的太简单了。谢谢!
echo $cost + floor($cost/6); 这样行不?你试试。结果应该是对的吧,觉得这样简单很多。如果周一,周五是放假呢?
$start = strtotime("2015-10-03 16:00:10");; //开始时间戳X$cost = 6; //花费工作日$w = date('w', $start);$nostart = array(0,6); //非工作日 工作制是6天$t = 0;while($cost--) { $t++; $w = ($w + 1) % 7; if(in_array($w, $nostart)) $t++;
}echo $t;我这样写,但是我带入的是2015年10月3日,从一个周六开始计算,如果是5天工作制,要完成6个工作日的工作,我需要加上10月3日当天,共计10天,也就是12号做完,但是这个算出来是7天,请问咋改呢