Marcelo   28-01-2021, 23:29
#1
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
kokodrilo   28-01-2021, 23:48
#2
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.

El tiempo de las manifestaciones caducó pero el boicot con auto sacrificio es el camino para derrotar al sistema.
Marcelo   28-01-2021, 23:59
#3
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
kokodrilo   29-01-2021, 00:04
#4
tal vez haciendo un pequeño código de ejemplo para que otros probemos en otros sistemas a ver que pasa, es una idea.

El tiempo de las manifestaciones caducó pero el boicot con auto sacrificio es el camino para derrotar al sistema.
Marcelo   29-01-2021, 00:59
#5
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...
jguardon   29-01-2021, 12:52
#6
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

Por favor, usa el corrector ortográfico antes de pulsar el botón 'Enviar'
Marcelo   30-01-2021, 02:00
#7
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
jguardon   30-01-2021, 12:58
#8
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

Por favor, usa el corrector ortográfico antes de pulsar el botón 'Enviar'
  
Usuarios navegando en este tema: 4 invitado(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.