Foros del Web » Programando para Internet » ASP Clásico »

Sistema de horarios

Estas en el tema de Sistema de horarios en el foro de ASP Clásico en Foros del Web. Hola, estoy creando un sistema de horarios en el que negocios ponen su horario de trabajo y yo debo detectar si actualmente esta abierto, el ...
  #1 (permalink)  
Antiguo 30/06/2009, 22:23
Avatar de sjam7  
Fecha de Ingreso: diciembre-2001
Ubicación: Guadalajara, Mexico
Mensajes: 3.672
Antigüedad: 23 años, 4 meses
Puntos: 16
Sistema de horarios

Hola, estoy creando un sistema de horarios en el que negocios ponen su horario de trabajo y yo debo detectar si actualmente esta abierto, el problema es que a veces comienza en un dia y termina en otro, por ejemplo abren a las 4 de la tarde y cierran a las 3 de la mañana del dia siguiente, como podria hacer esta comprobacion? y como me aconsejarian grabar el dato en la base de datos (los datos del horario)

Muchas gracias de antemano
  #2 (permalink)  
Antiguo 30/06/2009, 23:04
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Respuesta: Sistema de horarios

Si hora de apertura (16) es mayor que hora de cierre (3), entonces decidir

Anque se me ocurre preguntarte ¿cómo catalogás a los comercios que están las 24 horas abiertos? (yo lo haría como abre:0 / cierra: 24) [y con lo anterior te doy una idea acerca de cómo yo almacenaría esa info]
__________________
...___...
  #3 (permalink)  
Antiguo 30/06/2009, 23:34
Avatar de sjam7  
Fecha de Ingreso: diciembre-2001
Ubicación: Guadalajara, Mexico
Mensajes: 3.672
Antigüedad: 23 años, 4 meses
Puntos: 16
Respuesta: Sistema de horarios

cuando abren a las 10 por ejemplo y cierran a las 20 hrs pues no hay problema, hago una simple comparacion pero no capto como hacerlo cuando la segunda hora es mas chica que la primera pero del dia siguiente...

ademas algunos negocios tienen horarios diferentes en diferentes dias, aunque sacando el de un dia los demas seria igual...
  #4 (permalink)  
Antiguo 01/07/2009, 05:47
 
Fecha de Ingreso: julio-2008
Ubicación: Rosario
Mensajes: 26
Antigüedad: 16 años, 9 meses
Puntos: 1
Respuesta: Sistema de horarios

Sjam, se me ocurre que para el caso que planteas, ingreses 2 rangos de horario para ese negocio, es decir...

Negocio X
Horario 1: de 16 a 24 Hs
Horario 2: de 0 a 3 Hs

De esa manera nunca te quedaria el horario de cierre con un numero mas chico que el de apertura y creo que seria mas facil comparar con la hora actual

No se si puede ser util, un saludo
  #5 (permalink)  
Antiguo 01/07/2009, 12:30
Avatar de sjam7  
Fecha de Ingreso: diciembre-2001
Ubicación: Guadalajara, Mexico
Mensajes: 3.672
Antigüedad: 23 años, 4 meses
Puntos: 16
Respuesta: Sistema de horarios

pues pudiera ser una opcion, yo habia pensado en poner a la segunda hora una trampilla de si pasa de las 12 de la noche aumentarle 24 para que si por ejemplo ponen que cierran a las 3 de la mañana en el sistema sean las 27hrs, obviamente solo para comprobacion, ya a la hora de desplegar la hora en pantalla le quito los 24 otra vez,... ;.S

a alguien se le ocurre alguna otra opcion?
  #6 (permalink)  
Antiguo 01/07/2009, 12:30
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 3 meses
Puntos: 98
Respuesta: Sistema de horarios

Las horas en si no deberían ser problema si es que estás utilizando el tipo de dato fecha/hora pues como decía AZ:

12:00 AM = 0 horas
12:00 PM = 12 horas

Pero el manejo para tí es transparente solo tienes que obtener la porción hora del campo fecha, la fecha puede ser cualquier defaul "1/1/1900" por ejemplo.

Entonces tienes dos campos, hora de apertura y hora de cierre, y aquí aplicas las reglas del negocio.

Respondiendo a lo que planteaba AZ, lo que yo haría para los negocios de 24 horas es tener la misma fecha y hora (la de defaul): 1/1/1900 12:00:00 AM

Si sendos campos tienen esta misma hora, entonces son 24 horas, si no, tienen un horario de apertura y cierre.

Obtienes la hora de dichos campos y tomas la fecha actual, creas una nueva fecha que la comparas con now() y listo.

No se si entrarán a escena otras variables como diferentes husos horarios, pero esa ya es otra historia.

Mis 0.02
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #7 (permalink)  
Antiguo 02/07/2009, 20:15
Avatar de sjam7  
Fecha de Ingreso: diciembre-2001
Ubicación: Guadalajara, Mexico
Mensajes: 3.672
Antigüedad: 23 años, 4 meses
Puntos: 16
Respuesta: Sistema de horarios

goldman tu dices que maneje con la fecha completa? o no entendi bien?

viste mi post anterior al tuyo? escribimos al mismo tiempo
  #8 (permalink)  
Antiguo 02/07/2009, 21:17
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Respuesta: Sistema de horarios

Si, dice que uses la fecha completa. Y me parece buena idea, pero justo anoche le vi un para problema (o al menos no le encontré solución)... veamos si puedo recrearlo. Al momento tenemos 3 posibilidades: Comercios que abren y cierran el mismo día. Los que abren un día y cierran al siguiente -pero trabajan menos de 24 horas corridas-. Y finalmente los que no cierran nunca.

- Para caso 1 (abierto de 8 a 18):
campo_abre: 01/01/1900 08:00:00
campo_cierra: 01/01/1900 18:00:00

- Para caso 2 (abierto de 16 a 3 del día siguiente):
campo_abre: 01/01/1900 16:00:00
campo_cierra: 02/01/1900 03:00:00

- Para caso 3 (abierto las 24 horas):
campo_abre: 01/01/1900 00:00:00
campo_cierra: 01/01/1900 23:59:59

Tanto para caso 1 como caso 3, usando un between de la hora actual entre los campos abre y cierra te sirve. Pero le encuentro un problema al caso 2 (y justo eso es lo que te lleva a preguntar aquí)


Código:
if "01/01/1900" & hora_actual >= campo_abre AND "01/01/1900" & hora_actual <= campo_cierra then
abierto()
else
cerrado()
end if

para hora_actual = 17:00:00 da abierto... OK
para hora_actual = 15:00:00 da cerrado... OK
para hora_actual = 02:00:00 da cerrado... OK

Perdón, no dije nada... funciona
__________________
...___...
  #9 (permalink)  
Antiguo 03/07/2009, 02:33
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 3 meses
Puntos: 98
Respuesta: Sistema de horarios

Cita:
Iniciado por AlZuwaga Ver Mensaje
Si, dice que uses la fecha completa....

- Para caso 2 (abierto de 16 a 3 del día siguiente):
campo_abre: 01/01/1900 16:00:00
campo_cierra: 02/01/1900 03:00:00


Tanto para caso 1 como caso 3, usando un between de la hora actual entre los campos abre y cierra te sirve. Pero le encuentro un problema al caso 2 (y justo eso es lo que te lleva a preguntar aquí)


Código:
if "01/01/1900" & hora_actual >= campo_abre AND "01/01/1900" & hora_actual <= campo_cierra then
abierto()
else
cerrado()
end if
Siendo un poco estrictos, para el caso dos, a mi me parecería que rompes un poco con la regla en la base de datos, quizás yo trataría de dejar la base de datos con la fecha por defecto de 1/1/1900 y mejor implementar la lógica en la aplicación.

Podrías hacer una condición para el caso 2 en que

Si hora incial > hora final -> fecha_final = fecha_final + 1 dia

Asi tampoco te haces problema a la hora del registro, pues solo registras horas.


sjam: No te contesté después pues pensé que mi post aunque chocó con el tuyo contestaba la pregunta


Salud
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
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 19:52.