![]() |
Cambiar el formato de fecha
Alguien sabe si existe una funcion que cambie el formato de fecha, paritendo de este valor 'dom, 10 - ene - 2004', pasarlo a este otro '10/1/2004'. O sea para qeu nos entendamos que teniendo esta cadena 'dom, 10 - ene - 2004' lo pueda convertir en un TDateTime.
Lo eh provado con StrDate('dom, 10 - ene - 2004'), pero me indica qeu no es valida el formato fecha y con StrToDateTime y me dice lo mismo. Alguien me puede proporcionar alguna idea, como siempre gracias por adelantado :) |
Prueba a cambiar el formato manualmente en el evento OnSetText
Saludos |
Hola!!
No existe ninguna función definida por Borland que haga lo que tu necesitas salvo la que has probado, pero claro, esta se ciñe al formato de fecha/hora establecido por el sistema y te da una excepción. Yo creo que deberías almacenar la fecha con un formato TDateTime y cuando necesites mostrarla le das el formato "Jue, 19 - 2 - 2004" con FormatDateTime, pero nunca almacenes como texto una fecha o por lo menos con ese formato, una cosa es como guardas los datos y otra como los muestras. Pero por si es necesario u obligado que la fecha te llegue en ese formato a la hora de trabajar con ella, puedes optar por usar este código de C: double ExtraerFecha(char *stringFecha) { Word dia, mes, anyo; sscanf(stringFecha, "%*s %hu - %hu - %hu", 0, &dia, &mes, &anyo); return EncodeDate(anyo, mes, dia).Val; } El inconveniente es que la tienes que exportar a Delphi creando una DLL, un OBJ o un LIB. Otra opción es que implementes una rutina en Delphi que quite hasta el primer espacio, y luego vaya quedándose con lo que sean números y separándolo en variables, vamos, lo que hace 'sscanf' pero solo para tu caso, sin tener que pasarle cadena de formato. Otra opción es que le eches un vistazo a las variables globales “DateSeparator”, “LongDateFormat” y “ShortDateFormat”; escribe una de estas en el editor de Delphi en cualquier sitio y pulsa ‘F1’ verás que cantidad de información. Aunque lo mejor es que me hagas caso a lo que te he puesto al principio, guarda siempre el dato en TDateTime y muéstralo como te venga en gana. Suerte :-) |
Gracias
Gracias por tu consejo, lo tendre muy encuenta para la proximavez que trabaje con fechas :)
|
Prueba esta función:
Código:
function StringToDate(S: String): TDate; // Saludos |
La franja horaria es GMT +2. Ahora son las 02:14:13. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi