Comunidad Gambas-es
Problema extraño con las fechas - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Gambas (https://gambas-es.org/forum-3.html)
+--- Foro: General (https://gambas-es.org/forum-4.html)
+--- Tema: Problema extraño con las fechas (/thread-250.html)



Problema extraño con las fechas - Marcelo - 28-01-2021

Hola. Tengo un programa escrito en 2011 que está funcionando desde ese momento. No recuerdo la versión de Ubuntu ni de Gambas correspondiente a esa época pero el caso es que hoy en día estoy actualizando algunas funciones y usando Ubuntu 18.04 y Gambas 3.15.2 tengo un problema con las fechas.
No sé por donde viene el tema pero el problema es el siguiente:

Si yo grabo hoy "28/01/2021" en un campo "Hoy" en una base SQLite la fecha actual utilizando
 
Código:
Hoy = Format(Date(Now), "mm/dd/yy")

y accedo a la base de datos desde cualquier browser de SQLite, el valor del registro es "2021-01-27 21:00:00". La hora es siempre la misma sin importar en qué hora lo haga.
La hora no me interesa para nada pero acá el primer problema, me resta un día.
Eso no es todo. Si yo hago una lectura desde gambas de dicho registro obtengo diferentes resultados según como lo haga.

Por ejemplo:

Si uso:
Código:
Message.Info(hResul["Hoy"])
Obtengo como resultado "01/28/2021"

Pero si uso:
Código:
Message.Info(Format(hResul["Hoy"], "dd/mm/yyyy"))
Obtengo "27/01/2021"

Esto me causa un montón de problemas con facturaciones y cálculos de fechas de vencimiento en las operaciones del programa.
Esto comenzó al hacer una actualización de la PC y versión de Ubuntu donde se usa el programa pero ahora en mi casa, desde donde estoy actualizando el programa,  pasa exactamente lo mismo.

¿Será un problema de Gambas? ¿De Ubuntu? ¿Alguna idea?

Espero que mi pregunta se entienda.

Desde ya muchas gracias...

Marcelo


RE: Problema extraño con las fechas - kokodrilo - 28-01-2021

me parece que sos vos el que tiene que dar el formato que quieras a tus datos, es decir tratarlo antes de enviar, en algunas veces de una manera y otras de otra manera.


RE: Problema extraño con las fechas - Marcelo - 28-01-2021

Pero más allá del formato, el problema es que haciendo la lectura del registro e informándola tengo un día de diferencia usando "format" o haciéndolo "en crudo"... Huh


RE: Problema extraño con las fechas - kokodrilo - 29-01-2021

tal vez haciendo un pequeño código de ejemplo para que otros probemos en otros sistemas a ver que pasa, es una idea.


RE: Problema extraño con las fechas - Marcelo - 29-01-2021

Bueno, Actualizo:
Al parecer es un problema que se genera cuando grabo la información a la base de datos en el campo fecha utilizando la función FORMAT.
No sé a qué se deberá pero a partir del día 5/12/2019 el programa empezó a grabar en la base restándome un día. Mismo programa que venía funcionando así desde 2011. Así que algo externo a él se actualizó o quién sabe.
Como dato, pude notar que desde la fecha del conflicto, la hora de actualización de los registros siempre es 21:00:00 mientras que desde que el soft comenzo a funcionar en 2011 y después de la actualización que acabo de hacerle al código, la hora siempre es 00:00:00 (esto en el campo de la fecha)
O sea que desde que esto empezó a funcionar mal tengo que actualizar el registro de la base usando "Date(Now)" sin la función "Format". Si uso esta última para formatear la fecha al momento de grabar, me resta un día.
No recuerdo para qué necesitaría guardar la fecha formateada, así que hasta que encuentre esa respuesta, si es que la hay, la solución es la que acabo de contar.

Muchísimas gracias por la ayuda. De todas formas la duda sigue, más que nada, por curiosidad...


RE: Problema extraño con las fechas - jguardon - 29-01-2021

Es muy aconsejable al trabajar las fechas con la base de datos usar el formato nativo, es decir, la clase Date de gambas directamente que es como se guardan los datos en la BD.

Lo ideal es mantener ese formato durante todo el proceso y formatear sólo si es necesario a la hora de leer de la base de datos para presentar visualmente dichos datos.

Esto evitará muchos errores, ya que Format utiliza la localización de cada país y el huso horario correspondiente.

Saludos


RE: Problema extraño con las fechas - Marcelo - 30-01-2021

Muchísimas gracias. Es lo que finalmente terminé haciendo para evitar problemas. Guardar en formato nativo y formatear para presentar datos.
No sé que habré pretendido hacer en aquel momento... Cool


RE: Problema extraño con las fechas - jguardon - 30-01-2021

Me alegra mucho que lo hayas podido solucionar. La mayoría de los problemas que tienen los programadores con las fechas es siempre por esta misma razón.

Un saludo