
 Armando Alvarez - 2013-09-25 21:09:38
 
he visto la actualización que hiciste a tu clase, deberías dejar tomar en cuenta fines de semana como opción (en algunos trabajos se trabaja sabados, en otros de domingo a lunes). Asi que le hice una pequeña modificacion al método calcular de tu clase horas_laborales.php
/**
     * calcular
     *
     * Recibe como parametros dos fechas, en formado string ("Y-m-d H:i:s")
     *
     * @access    public
     * @param    string     fecha_inicio fecha en la que se inicia la tarea
     * @param    string    fecha_inicio fecha en la que se finaliza la tarea
     * @param    $array    recibe un arreglo de dias excluidos
     * @return    array
     */
    public function calcular($fecha_inicio, $fecha_fin,$_dias_excluidos=array('Sat','Sun'))
    {
        //Obtener las fechas correspondientes en formato arreglo: array(yyy,MM,dd,hh,mm,ss)
        $fecha_inicio_array = $this->convertir($fecha_inicio);
        $fecha_fin_array = $this->convertir($fecha_fin);
        //While infinito
        $i = 0;
        $c_minutos = 0;
        while (true) {
            //acumular la suma de los minutos de la fecha de inicio y le sumo 1
            $minuto = $fecha_inicio_array[4]+$i;
            //convertir la fecha a formato string ("Y-m-d H:i:s") para comparar con la fecha de fin
            $fecha_2 = date("Y-m-d H:i:s", mktime($fecha_inicio_array[3], $minuto, $fecha_inicio_array[5], $fecha_inicio_array[1], $fecha_inicio_array[2], $fecha_inicio_array[0]));
            //Obtener fecha unix
            $fecha_inicio_unix = strtotime($fecha_2);
            //Obtener el nombre del dia de la semana
            $dia = date('D', mktime($fecha_inicio_array[3], $minuto, $fecha_inicio_array[5], $fecha_inicio_array[1], $fecha_inicio_array[2], $fecha_inicio_array[0]));
            
            if (!in_array($dia, (array)$_dias_excluidos)) {
                $fecha_inicio_array2 = $this->convertir($fecha_2);
                if($this->hora_laboral($fecha_inicio_array2[3])){
                    if(substr($fecha_2, 0, -3) == substr($fecha_fin, 0, -3)){
                        break;
                    }
                    $c_minutos++;
                }
            }
            $i++;
        }
        $f = array(
            'minutos' => $c_minutos,
            'horas' => $c_minutos/60,
            'dias' => ($c_minutos/60)/24,
            'meses' => (($c_minutos/60)/24)/12
        );
        return $f;
    }