Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 2
Ir a la página 1, 2  Siguiente
 
Operacion Entre Horas Con DateAdd
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Operacion Entre Horas Con DateAdd 
 
Hola amigos.
Tras repasar los posibles temas en este excelente foro buscando una posible solución a mi problema, me decido a escribiros por si alguien pudiera ayudarme.
Os explico :
Tengo una aplicacion que una de las cosas que realiza es la adición de un valor de tiempo a una hora determinada.
Es decir, una variable reg_temp (valor de la hora actual refrescandose en continuo), una variable reg_temp_ini (valor que congela dicha hora en un momento dado) y variable reg_temp_fin (variable que contiene la suma de reg_temp_ini mas un espacio de tiempo).
Es decir, pongamos que mi hora actual es 18:00 (reg_temp) y le añado 15 minutos con lo que se convierte en 18:15 (reg_temp_fin).
El proceso se realiza correctamente mediante esta sentencia :
reg_temp_fin = DateAdd(Format$(reg_temp_ini, "hh:nn"), gb.minute, 15)

Durante todo el dia registra correctamente todos los valores.
Pero cuando nos aproximamos a las 00:00 horas, en cuanto pasa de 23:45, me aparece un valor incorrecto.
Tengo una condición, mediante la cual cuando reg_temp es igual a reg_temp_fin me graba el valor de la fecha, hora y temperatura.
Pero cuando se produce el hecho de acercarse a 00:00 la comparación es falsa y claro, deja de trabajar bien la rutina.

Teneis idea de como podría subsanar este problema ?? Le he dado muchas vueltas sin conseguir pasar por esas 00:00 y tener un resultado satisfactorio.

Daros las gracias anticipadas y a la espera de vuestros comentarios os envío un cordial saludo.

Juan Sebastian  
 



 
inforpalma - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Operacion Entre Horas Con DateAdd 
 
Bienvenido al foro.

El tema de las fechas es un poco lío de entender, por cuanto las fechas pueden ser absolutas, es decir que marcan un momento real del tiempo, con lo que tienen que tener en cuenta el uso horario de la máquina en que se ejecuta el programa, o relativas, en las que no importa eso de la ubicación y sólo se trata de un dato más.

Las funciones de Fecha de gambas a veces respetan el uso horario y a veces no. Revisa en la documentación las funciones que usas para rellenar esas variables, así verás que no es lo mismo Date, que sí tiene en cuenta el uso horario, que cDate o Val (hablo de memoria), que no lo tienen en cuenta.


Saludos
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Operacion Entre Horas Con DateAdd 
 
Tal vez el problema es que le sumas minutos a un tiempo que tiene limitado por formato a hh:nn es decir que cuando los minutos sean una hora esta se suma a la hora de inicio y si esta es mas de 24 vuelve a cero pero se suma un dia mas, pero como por el formato hh:nn nunca se ve ese incremento de un dia.
Dajo un ejemplo para que lo veas.

Saludos y bienvenido al foro.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Operacion Entre Horas Con DateAdd 
 
Hola Shordi y Tincho.
Muchísimas gracias por contestar y gracias Tincho por el código.

Sigo estudiando como devanar este entresijo.

Realmente creo que es como dices tu Tincho.
Los registros los realizo cada 15 minutos, y como dije todo ok durante todo el día pero al llegar a las 23:45 es cuando peta.
Entiendo que aunque el día se fuera incrementando, la adición de 15 minutos a una hora dada (aunque fuera a las 23:45, no debería darme el error. Creí que al sumar 15 minutos a dicha hora, esta pasaría a ser las 00:00 o dicho de otro modo, si la coincidencia en la hora de registro fuera a las 23:55 debería realizar el siguiente registro a las 00:10. Pero no es así.

Os agradezco la bienvenida y el detalle de contestarme.

Un saludote y desearos un muy buen fin de semana.
 



 
inforpalma - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Operacion Entre Horas Con DateAdd 
 
inforpalma escribió:  
...y como dije todo ok durante todo el día pero al llegar a las 23:45 es cuando peta...

Mira de hacer la suma de tiempo usando el día también no solo la hora como haces. Es mas en el código que subí podras ver que que uso año,mes,dia,hora,minuto,segundo.
La forma segura de hacer la suma de tiempo es usando todos los ordenes de magnitud desde la menor (en tu caso el minuto) hasta el año. y luego si quieres mostrar solo el HH:MM pues lo restringes con format y listo.
Operar
yyyy mm dd hh nn
Mostrar o registrar
hh nn

Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Operacion Entre Horas Con DateAdd 
 
Saludos y bienvenido, inforpalma

En mi opinión, como ya ha comentado Tincho, deberías usar el objeto "Date" tal cual, ya que contiene todos los datos de fecha y tiempo y puedes operar con ellos de manera transparente usando las funciones DateAdd() y DateDiff(). Luego, una vez obtenido el resultado, puedes formatear la salida a tu gusto, pero es fundamental entender el funcionamiento de las clases Date y Time.

http://gambaswiki.org/wiki/lang/time

http://gambaswiki.org/wiki/lang/date

http://gambaswiki.org/wiki/cat/time

Espero que sea de ayuda, si te sirve de consuelo, todos hemos tenido quebraderos de cabeza con esto y con las conversiones a UTC, que sigo sin enterarme  
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Operacion Entre Horas Con DateAdd 
 
Hola, amigos.
Tras unos días de desconexión del PC (dios mio el santo trabajo), acabo de leer vuestros mensajes.
Daros las gracias por los comentarios y procedo a modificar el código como me indicais.

Lo pongo en prueba y espero tener exito (seguro que asi sera)

Gracias de nuevo y os informo de como me va el pastel  
 



 
inforpalma - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Operacion Entre Horas Con DateAdd 
 
Hola Shordi, Tincho y Jguardon......

Bueno, deciros que ha sido un éxito total la modificación del código siguiendo vuestras indicaciones. Efectivamente gambas no parece tratar igual fecha / hora de hora separada.
Haciendo lo que habéis indicado esta noche me ha actualizado correctamente los registros a partir de la 23:45, sin ningún problema.

Daros de nuevo las gracias y enviaros un fuerte saludo.

Hasta pronto....  
 



 
inforpalma - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Operacion Entre Horas Con DateAdd 
 
inforpalma escribió:  
Hola Shordi, Tincho y Jguardon......Daros de nuevo las gracias y enviaros un fuerte saludo.

Bueno es grato poder ayudar.
Espero que en algun momento puedas compartir el código o hacer algún ejemplo relacionado lo que has estado haciendo.
De esta manera todos aprendemos un poquito mas.
Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Operacion Entre Horas Con DateAdd 
 
Hola Tincho y amigos.
Atendiendo tu indicacion, voy a describir rápidamente que he hecho con Gambas.
Se me planteo la necesidad de realizar una aplicación para el control de 10 cámaras frigoríficas de un Hotel en Granada.
Yo vivo en Palma de Mallorca y se me ocurrió hacer el siguiente tandem :

Un PLC de la casa Industrial Shiels el cual está basado en Arduino con una placa Arduino Mega y una Raspberry conectados ambos por el puerto serie.
En el PLC hago correr un Sketch que controla las sondas de temperatura y gestion del puerto com y mediante la raspberry, corriendo Debian y a través de VNC controlo la aplicación así como su modificación a distancia.
La verdad es que llevan las sondas de temperatura conectadas hace ya casi 2 meses y funciona correctamente. Envía correos en caso de alarma y realiza un registro en SQLite de todas las señales.
Estoy muy contento desde ayer, que gracias a vuestra ayuda he podido terminar con el correcto registro de los datos.
Esta es la pantalla principal de la aplicación en gambas 3

 2018_12_05_21_37_51_aglocem_camaras_frio

Y estos los registros

 2018_12_05_21_41_15_aglocem_camaras_frio_registros

He capturado los de anoche para que veais que el cambio de hora/dia lo realiza correctamente. Gran alegría por mi parte ya que estaba desesperado con este tema.

Bueno, espero haberos ilustrado un poquito con esta simple aplicación y os deseo unos muy buenos días festivos.

Un saludo y gracias de nuevo.

Juan.
 



 
inforpalma - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
Ocultar¡Este tema fue útil?

 

Elegir valoración:                       

Media de valoración Valoración mínima Valoración máxima Número de valoraciones
0.00 0 0 0
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Problemas Con Horas Minutos Y Segundos desoljor General 1 Lunes, 07 Marzo 2011, 14:45 Ver último mensaje
soplo
No hay nuevos mensajes Como Realizar Esta Operacion Con 2 Checkbo... metalgearxd General 2 Viernes, 22 Febrero 2013, 21:39 Ver último mensaje
metalgearxd
No hay nuevos mensajes Se Puede Hacer Que El Reloj Digital "... metalgearxd General 7 Domingo, 10 Marzo 2013, 14:21 Ver último mensaje
metalgearxd
No hay nuevos mensajes VideoConferencia En Hangouts: Martes 12 A ... jsbsan General 8 Domingo, 17 Abril 2016, 12:08 Ver último mensaje
jsbsan
 

Publicar nuevo tema  Responder al tema  Página 1 de 2
Ir a la página 1, 2  Siguiente

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
No puede descargar archivos
No puede publicar eventos en el calendario