Foros del Web » Programando para Internet » PHP »

Calculos De Tiempo

Estas en el tema de Calculos De Tiempo en el foro de PHP en Foros del Web. Buenas. Vereis, necesito hacer calculos con horas de entrada y salida para una aplicacion de control. sabria acerlo a base de comandos str... pero me ...
  #1 (permalink)  
Antiguo 30/03/2006, 03:36
Avatar de keroveros  
Fecha de Ingreso: febrero-2006
Mensajes: 55
Antigüedad: 11 años, 10 meses
Puntos: 0
Calculos De Tiempo

Buenas.

Vereis, necesito hacer calculos con horas de entrada y salida para una aplicacion de control. sabria acerlo a base de comandos str... pero me parece trabajo de chinos, (sin faltar he?).

Hay algun tipo de funciones para tratamiento de horas??.

y otra cosilla, en la base de datos debo tratar este campo como tipo TIME??....

Estoy un poco mareado.... Gracias de antemano.

Salu2!!
  #2 (permalink)  
Antiguo 30/03/2006, 07:42
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
Creo que el campo debiera ser datetime, a no ser que quieras tener fecha y hora separados.
Las funciones para tratamiento de fecha y hora son: www.php.net/manual/es/ref.datetime.php
Que base de datos usarás?
  #3 (permalink)  
Antiguo 30/03/2006, 07:57
Avatar de keroveros  
Fecha de Ingreso: febrero-2006
Mensajes: 55
Antigüedad: 11 años, 10 meses
Puntos: 0
Buenas claudiovega.

Verás, lo que necesito hacer es controlar la hora, solo la hora, la fecha va aparte.

Por controlar la hora quiero decir,que: debo controlar las horas de salida y entradas de los empleados de una empresa.El problema lo tengo a la hora de calcular las horas totales diarias del empleado. Por ejemplo

Un empleado entra a las 9:30 y sale a las 14:00. Por la tarde vuelve a entrar a las 17:00 y sale a las 20:00.

Por lo que la hora total seria --> ((14:00-9:30)+(20:00-17:00)).

Como dije antes, se una manera de hacerlo a base de funciones str... pero me parece poco ortodoxa y eficaz.

He ojeado por encima la informacion que me has pasado y parece ser que la mayoria son referentes a la fecha pero no a la hora.

La base de datos que uso es MySQL.

Salu2! y Gracias de antemano.
  #4 (permalink)  
Antiguo 30/03/2006, 08:15
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
Como planeas obtener la hora e ingresarla al sistema, por medio de un formulario en el que pidas la hora, o asignaras a una entrada de datos la hora actual de la maquina?
Importan los segundos o minutos de atraso de los empleado o usaras la hora más próxima?
  #5 (permalink)  
Antiguo 30/03/2006, 08:25
Avatar de keroveros  
Fecha de Ingreso: febrero-2006
Mensajes: 55
Antigüedad: 11 años, 10 meses
Puntos: 0
Cita:
Iniciado por claudiovega
Como planeas obtener la hora e ingresarla al sistema, por medio de un formulario en el que pidas la hora, o asignaras a una entrada de datos la hora actual de la maquina?
Importan los segundos o minutos de atraso de los empleado o usaras la hora más próxima?
Verás, es una empresa pequeñita y de confianza en sus empleados, el problema, es que trabajan fuera de la oficina, y por motivos ajenos a mis conocimientos, deben diariamiente dar parte de las horas, y para ahorrar el ir a la oficina, estoy haciendo esta aplicacion via web, para que cada empleado lo haga desde su casa sin necesidad de ir a la oficina a informar.

Al ser pocas las personas que lo van a usar, la hora la introducen ellos manualmente en un textfield poniendo el formato hh:mm ,sin segundos.

Debido a que un empleado lo puede rellenar a la hora que le plazca, no puedo tomar la hora de ningun lado, si no la que ellos me dan.

Respecto al tiempo de atraso, no comprendo demasiado bien a lo que te refieres.

PD: En la BD el campo donde se introduce la hora es TIME, no es ni DATATIME ni TIMESPAM, no se si influira en algo.

Salu2!
  #6 (permalink)  
Antiguo 30/03/2006, 09:14
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
Estudié un poco el campo time y vi que es a mi juicio el mejor para tu caso, dado que:

1) puedes ingresar la hora asi:
insert into table (hora_entrada,hora_salida) values('10:00','12:00');

2) existen funciones que te permiten trabajar con ese tipo de dato facilmente, ejemplo:

SELECT abs(timediff(hora_entrada,hora_salida)) as difhora FROM tabla

Requiere mysql 4.1 o superior.
  #7 (permalink)  
Antiguo 30/03/2006, 09:33
Avatar de keroveros  
Fecha de Ingreso: febrero-2006
Mensajes: 55
Antigüedad: 11 años, 10 meses
Puntos: 0
Muchas gracias Claudiovega, que pena que no este en la oficina para poder provarlo, pero voy a crear una simulacion de BD para probarlo y te cuento.

una preguntita... abs forma parte de la funcion?? supongo que si..

Muchas gracias, me temia que la solucion estuviera en sql, pero estoy pegadillo....

Gracias!

--EDIT--

PD: Esa funcion seria para la diferencia entre horas... existe alguna para sumar?.. no es primordial, ya que para la suma es mas facil con funciones str... de php.

Salu2!
  #8 (permalink)  
Antiguo 30/03/2006, 11:25
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
abs() es una funcion matematica, el valor absoluto de un numero. La funcion que obtiene la diferencia es timediff(), para sumar nose, talvez timestampadd(). Documentacion:

http://dev.mysql.com/doc/refman/5.0/...functions.html
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 10:26.