Este foro usa cookies
Este foro utiliza cookies para almacenar su información de inicio de sesión si está registrado y su última visita si no lo está. Las cookies son pequeños documentos de texto almacenados en su computadora; las cookies establecidas por este foro solo se pueden usar en este sitio web y no representan ningún riesgo de seguridad. Las cookies en este foro también rastrean los temas específicos que ha leído y la última vez que los leyó. Si Ud. continúa navegando, entenderemos que acepta todas las cookies.

Se almacenará una cookie en su navegador, independientemente de la elección, para evitar que se le vuelva a hacer esta pregunta. Podrá cambiar la configuración de sus cookies en cualquier momento utilizando el enlace en el pie de página.

El foro antiguo se encuentra accesible desde https://foro.gambas-es.org en modo de solo lectura.

Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

Problema extraño con las fechas
#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
    ¡Gracias!
#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.
    ¡Gracias!
#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
    ¡Gracias!
#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.
    ¡Gracias!
#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...
    ¡Gracias!
#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'
    ¡Gracias!
#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
    ¡Gracias!
#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'
    ¡Gracias!


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)