FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
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 |
#2
|
|||
|
|||
Prueba a cambiar el formato manualmente en el evento OnSetText
Saludos |
#3
|
|||
|
|||
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 :-) |
#4
|
||||
|
||||
Gracias
Gracias por tu consejo, lo tendre muy encuenta para la proximavez que trabaje con fechas
|
#5
|
||||
|
||||
Prueba esta función:
Código:
function StringToDate(S: String): TDate; var Coma: Integer; begin Coma := Pos(',', S); if Coma = 0 then raise Exception.Create('Formato inválido'); Delete(S, 1, Coma); ActiveX.VarDateFromStr(S, 0, 0, Double(Result)); end; // Saludos |
|
|
|