Foros del Web » Programando para Internet » PHP »

Calculo Productividad

Estas en el tema de Calculo Productividad en el foro de PHP en Foros del Web. Hola Gente, les comento que me encontré con un problema el cual no se como resolver, es por ello que recurro a ustedes. Tengo que ...
  #1 (permalink)  
Antiguo 04/03/2013, 06:40
 
Fecha de Ingreso: febrero-2006
Mensajes: 4
Antigüedad: 18 años, 2 meses
Puntos: 0
Calculo Productividad

Hola Gente, les comento que me encontré con un problema el cual no se como resolver, es por ello que recurro a ustedes.

Tengo que realizar un calculo de productividad el mismo se realiza en base a variables que son del tipo time (00:00:00) el mismo es el siguiente

a = 05:03:22;
b = 00:02:45;
c = 00:00:04;
d = 00:01:04;

Productividad = a - (b+c+d) / a

en este ejemplo el resultado debería ser 04:44:56.

Intente de todas y al momento no llego a buen puerto.
  #2 (permalink)  
Antiguo 04/03/2013, 06:47
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Calculo Productividad

Propiamente NO existe una variable de tipo time en php... Puedes tener una dato en milisegundos (que sera de tipo numerico) y darle formato para que la muestre como una hora.... pero si la variable sin mas te muestra 00:00:00 es que tienes un texto....

No se en que situación te en cuentras usa las DateTime functions para pasar tus datos a time y operar con ellos...

Si los datos los estas sacando de mysql, donde si hay un tipo de campo time, tambien podrias trabajar con la DateTime functions de Mysql para que la query te retorne directamente la productividad....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 04/03/2013 a las 06:52
  #3 (permalink)  
Antiguo 04/03/2013, 07:13
 
Fecha de Ingreso: febrero-2006
Mensajes: 4
Antigüedad: 18 años, 2 meses
Puntos: 0
Respuesta: Calculo Productividad

Hola quimfv, en primer lugar agradezco tu respuesta.
Te paso mas detalle porque puede que omití algunas cosas.

La información se obtienen de un select de la base y se genera un array
SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(fin) - TIME_TO_SEC(inicio))) AS timediff

es la diferencia entre el inicio y la finalización de una acción.

luego con esos tiempos es que quiero hacer el calculo que detalle. espero que se entienda.
  #4 (permalink)  
Antiguo 04/03/2013, 08:25
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Calculo Productividad

Entiendo que fin y inicio son DATETIME o TIME en la bbdd, primero los pasas a segundo restas y luego el resultado lo pasas otra vez a TIME, y en este formato lo recibe php pero cuando php recibe es un texto formateado asi 'HH:MM:SS'.

En php una fecha con su hora es un objeto debes usar las funciones que te indique para pasar el dato texto al objeto fecha de php y luego operar entre fechas/horas...

http://php.net/manual/es/function.strtotime.php

O más facil, quizas?, usa

SELECT SUM(TIME_TO_SEC(fin) - TIME_TO_SEC(inicio)) AS timediff

sin convertirlo a time (quitando SEC_TO_TIME) y tendras un numero de segundos con los que podràs operar como un numero normal una vez tengas el resultado lo tendrás en segundos luego pasalo a hh:MM:SS ... (dividiendo por 60 las veces que haga falta)
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 04/03/2013 a las 08:32
  #5 (permalink)  
Antiguo 04/03/2013, 11:59
 
Fecha de Ingreso: febrero-2006
Mensajes: 4
Antigüedad: 18 años, 2 meses
Puntos: 0
Respuesta: Calculo Productividad

Hola quimfv, estoy realizan la prueba que me dijiste no tengo los resultados esperados te paso en detalle a ver si me podes dar una mano.

$hora1='05:03:22';
$hora2='00:02:45';

$hours_dib = strtotime($hora1) / strtotime($hora2);
echo "<br>". date('H:i:s', $hours_dib);

en el echo obtengo "00:00:01" siendo que debería recibir "07:33:49". No se que estoy haciendo mal...

Me podrán dar una mano. Gracias!!
  #6 (permalink)  
Antiguo 05/03/2013, 03:17
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Calculo Productividad

El resultado de ese echo no parece lògico pero NO entiendo que relación tienen 5h 3m 22s partido por 2m 45s con 7h 33m 49s.... el resultado de esa división es cuantas veces cabe 2:45 en las 5h... ese resultado como se puede interpretar en horas...???
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #7 (permalink)  
Antiguo 05/03/2013, 06:32
 
Fecha de Ingreso: febrero-2006
Mensajes: 4
Antigüedad: 18 años, 2 meses
Puntos: 0
Respuesta: Calculo Productividad

Si es verdad lo que decís, pero tienen mas contexto en el calculo total que mostré en un principio.

a = 05:03:22;
b = 00:02:45;
c = 00:00:04;
d = 00:01:04;

Productividad = a - (b+c+d) / a

en este ejemplo el resultado debería ser 04:44:56.

En donde de 05:03:22 de logeo te da como una productividad de 04:44:56. Espero me puedan ayudar para resolver esto.

Etiquetas: calculo, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:02.