Comparar horas de variable fecha |
Responder |
Autor | |
pascual14
Colaborador Unido: 30/Junio/2014 Localización: madrid Estado: Sin conexión Puntos: 530 |
Tema: Comparar horas de variable fecha Enviado: 13/Septiembre/2019 a las 19:47 |
Hola amigos, tengo un problema que no sé como solucionar. Tengo una función a la que le paso una hora tipo 30/09/2019 5:00:00 de esa fecha tomo la hora en formato corto y luego la comparo para saber a que turno de trabajo pertenece. Tengo 3 de 6:00 a 14:00 de 14:00 a 22:00 y de 22:00 a 6:00. La cosa es que funciona bien menos con algunas horas, por ejemplo la hora 5:00:00 que no entiende que es el tercer turno y no sé por qué. ¿alguna idea de que hago mal? o es que esto se hace de otra forma? esta es mi función. Gracias. Private Function CalculaTurno(datFechaHora As Date) As Byte Dim datHora As Date, bytTurno As Byte datHora = Format(datFechaHora, "Short Time"): bytTurno = 0 If datHora >= #6:00:00 AM# And datHora <= #2:00:00 PM# Then bytTurno = 1 ' Primer turno. Mañana End If If datHora > #2:00:00 PM# And datHora <= #10:00:00 PM# Then bytTurno = 2 ' Segundo turno. Tarde End If If datHora > #10:00:00 PM# And datHora < #6:00:00 AM# Then bytTurno = 3 ' Tercer turno. Noche End If CalculaTurno = bytTurno End Function |
|
Mihura
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Unido: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 13990 |
Enviado: 13/Septiembre/2019 a las 20:39 |
Emplea la función Hour ...
Hora = Hour(datfechaHora) If Hora > 6 then .... elseif hora > 14 ..... else > 22 ..... end if Edito: ... por cierto, por estas cosas yo siempre separo en dos campos fecha y hora ...
Editado por Mihura - 13/Septiembre/2019 a las 20:43 |
|
mounir
Colaborador Unido: 09/Febrero/2009 Localización: Asturias-España Estado: Sin conexión Puntos: 6479 |
Enviado: 13/Septiembre/2019 a las 20:40 |
Hola!
Es normal que te dé problemas, aquí declaras la hora como corta y luego en las condiciones "If" la pones como hora larga. lo correcto sería: datHora = Format(datFechaHora, "Long Time") |
|
Un Saludo.
|
|
fcoval
Asiduo Unido: 19/Enero/2013 Estado: Sin conexión Puntos: 225 |
Enviado: 13/Septiembre/2019 a las 20:58 |
Justamente esta mañana he tenido que usar algo parecido...
|
|
emiliove
Administrador Unido: 16/Junio/2009 Localización: Mexico Estado: Sin conexión Puntos: 5694 |
Enviado: 13/Septiembre/2019 a las 23:04 |
Otra:
Editado por emiliove - 13/Septiembre/2019 a las 23:05 |
|
pascual14
Colaborador Unido: 30/Junio/2014 Localización: madrid Estado: Sin conexión Puntos: 530 |
Enviado: 14/Septiembre/2019 a las 09:55 |
Hola amigos, primero dar las gracias pro la ayuda. Ya he probado esto y me doy cuenta que se me olvidó detallar que a veces tengo que calcular el turno de todas no enteras, pro ejemplo las 14:30, con lo que la función hour no me sirve porque me devuelve 14, me diría que es del tuno de mañana y en realidad es el de tarde. La que si que me ha servido es la función de emiliove. La verdad es que no me ha tocado casi nada trabajar con horas. Gracias de nuevo. Podéis cerrar el hilo.
|
|
Responder | |
Tweet
|
Ir al foro | Permisos de foro Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |