$start = time(); //开始时间戳X
$cost  = 12;   //花费工作日
工作制是6天我想得到
实际经过了多少天才完成这个任务等于加上了周日

解决方案 »

  1.   


    <?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));
    }
    ?>
      

  2.   

    $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
      

  3.   


    $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;
      

  4.   


    echo $cost + floor($cost/6);  这样行不?
      

  5.   


    echo $cost + floor($cost/6);  这样行不?你试试。
      

  6.   


    这个不是很看得懂,如果工作制是一个变量$workday,值是5 或者 6 怎么写呢
      

  7.   

    是数组编程array(0,1) 么
      

  8.   

    $w = date('w', $start); //得到的周几,周日为0$nostart = array(0); //非工作日数组
    记录的是非工作日的星期数,比如 array(0, 6) 表示周日、周六
      

  9.   


    echo $cost + floor($cost/6);  这样行不?你试试。结果应该是对的吧,觉得这样简单很多。
      

  10.   


    echo $cost + floor($cost/6);  这样行不?你试试。结果应该是对的吧,觉得这样简单很多。如果周一,周五是放假呢?
      

  11.   

    你这样反问是不行的这样是14天
    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 呢
      

  12.   

    你这样反问是不行的这样是14天
    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 呢哦哦,明白了,确实是我想的太简单了。谢谢!
      

  13.   


    echo $cost + floor($cost/6);  这样行不?你试试。结果应该是对的吧,觉得这样简单很多。如果周一,周五是放假呢?
      

  14.   


    $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天,请问咋改呢