Problemas con la fecha
Hola para tod@s, antes de describirles el problema les pongo en contexto, Desarolle una aplicación bajo D7, dicha aplicación en sus B.D. usa dd/mm/aa para las fechas, la computadora donde se realizo dicha aplicación se formatio e instale el mismo S.O. y el D7, ejecute dicha aplicación, no reconocía las fechas de las B.D., lo solucione con la instrucción SysUtils.ShortDateFormat := "dd/mm/aa" en el create de la forma ppal, ya reconocía la fecha de las B.D. salvo al decodificar la fecha esta la traía en ingles, ahora al programar un nuevo modulo en dicha aplicación preciso de decodificar la fecha, acá viene mi pregunta xq al decodificar la fecha al invocar el día me trae el año y viceversa lo único que me decodifica bien es el mes, espero me de a entender para que me puedan colaborar y disculpen tanto texto para realizarles la pregunta.
Chauuuuu, se cuidan |
Estas grabando las fechas como texto (varchar o similar?)?
|
Disculpemen la ignorancia pero no se a que se refiere nuestro compañero con varchar o similar, He probado con dos campos en una tabla uno de tipo String (Lo grabo NombreDeCampo.String) y el otro Tipo Date (Lo grabo NombreDeCampo.AsString) y al decodificar ambos me sigue presentando el mismo problema.
Chauuuu, se cuidan. |
Ese es tu error. No guardes los datos como string (AsString/String). Asi estas guardando el formato local de la fecha. Usa el campo Date y usa la propiedad date adecuada.
Solamente se formatea para MOSTRAR al usuario, nunca para manipular internamente las fechas (o numeros, valores de moneda, etc). |
Siempre puedes guardar la fecha como un 'double'..., aunque su manejo es más complicado, suele ser más efectivo a la hora de comparar fechas.
|
No, guarda fechas como fechas.
Lo digo jodidamente en serio. Mi trabajo es integrar un monton de apps y BD. De donde sacan los programadores esas ideas raras que las fechas hay que guardarlas de otra manera(?) es uno de mis mas grandes dolores de cabeza, despues de los que se les ocurre guardar valores monetarios como flotantes binarios, o peor, como texto con símbolos de moneda ( y eso, resumiendo. He visto de todo!). Usar el tipo correcto es de los mas importante y elemental en la programación. Y de mas, cuando sale GRATIS porque el motor/lenguaje ya lo tiene. Al 1.000 millones por ciento si se escoje a drede un tipo incorrecto el programa ES incorrecto. |
Cita:
|
Cita:
|
Cita:
A la hora de almacenar yo también soy tajante: cada tipo para lo que es.
|
Cita:
|
Para aclarar cosas, teniendo en cuenta que conceptos como "fecha", "moneda", "texto" son abstracciones que eventualmente se pueden representar en tipos "primarios" como doubles, ints, bits, etc. Porque es MUY importante ceñirse a la regla de usar el tipo mas exacto posible en vez de "optimizarlo" o lo que sea que pase como razon en nuestra mente?
Porque son JODIDAMENTE COMPLEJOS. Yo me le meto mas a hacer un ERP que una librería de fechas. No miren sin mas: https://infiniteundo.com/post/253269...eve-about-time Cita:
https://github.com/kdeldycke/awesome-falsehood |
Tengo com lema no llevarle la contraria a los que saben mas que uno, asi considero a la gran mayoria de los de este foro, en cuanto a nuestro lenguaje DELPHI, solamente me queda por agradecerles a todos, todos los campos que tenia como String los baje a TDateTime y me funciona perfecto.
Chauuu se cuidan. |
La franja horaria es GMT +2. Ahora son las 10:36:49. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi