Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-02-2004
Avatar de VolaRe
VolaRe VolaRe is offline
Miembro
 
Registrado: ago 2003
Posts: 121
Poder: 21
VolaRe Va por buen camino
Question 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
Responder Con Cita
  #2  
Antiguo 15-02-2004
santana santana is offline
No confirmado
 
Registrado: nov 2003
Posts: 1.030
Poder: 0
santana cantidad desconocida en este momento
Prueba a cambiar el formato manualmente en el evento OnSetText

Saludos
Responder Con Cita
  #3  
Antiguo 19-02-2004
VictorVG VictorVG is offline
Registrado
 
Registrado: feb 2004
Ubicación: Sagunto-(Valencia)
Posts: 3
Poder: 0
VictorVG Va por buen camino
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 :-)
Responder Con Cita
  #4  
Antiguo 19-02-2004
Avatar de VolaRe
VolaRe VolaRe is offline
Miembro
 
Registrado: ago 2003
Posts: 121
Poder: 21
VolaRe Va por buen camino
Thumbs up Gracias

Gracias por tu consejo, lo tendre muy encuenta para la proximavez que trabaje con fechas
Responder Con Cita
  #5  
Antiguo 19-02-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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;
Deberás incluir la unidad ActiveX en tu proyecto.

// Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 10:27:01.


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
Copyright 1996-2007 Club Delphi