Login   Register  
PHP Classes
elePHPant
Icontem

Horas Laborales

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us

      Horas Laborales  >  All threads  >  Horas Laborales  >  (Un) Subscribe thread alerts  
Subject:Horas Laborales
Summary:modificacion
Messages:1
Author:Armando Alvarez
Date:2013-09-25 21:09:38
 

  1. Horas Laborales   Reply   Report abuse  
Picture of Armando Alvarez
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;
}