Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-09-2016
Ramsay Ramsay is offline
Miembro
NULL
 
Registrado: ene 2016
Posts: 104
Poder: 9
Ramsay Va por buen camino
Convertir String a DateTime

Hola tengo este fecha en un string :

fecha := 'Sat Dec 24 20:15:04 +0000 2011';

Necesito saber como puedo convertirla a en una fecha estilo 1/7/1990 (es un ejemplo).

Mi codigo :

ShowMessage(DateTimeToStr(StrToDateTime(fecha)));

Me dice DateTime Invalid , no lo culpo es un formato raro , ¿ como se podria hacer ?
Responder Con Cita
  #2  
Antiguo 27-09-2016
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.233
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
El problema es que tal y como comentas, hay muchos formatos de fecha y sería muy complicado que una función supiera identificarlos y convertirlos correctamente todos.
Creo (salvo que alguien diga otra cosa) que en este caso, vas a tener que hacerlo de forma manual.
Es decir, cortando los trozos de la cadena que te interesan (día, mes, año) utilizando la funcioón Copy y luego usando un EncodeDate para generar una fecha con ellos.

Antes de codificar busca en los foros, porque es posible que alguien ya haya generado código para esto.

AÑADO: Es posible que [Al], en su librería GHFreebrary ya lo haya implementado. Revisa este post.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 27-09-2016
Ramsay Ramsay is offline
Miembro
NULL
 
Registrado: ene 2016
Posts: 104
Poder: 9
Ramsay Va por buen camino
Si lo habia pensado pero el mes no esta en un numero esta en "Dec" , como haria en este caso , ¿ como lo convierto en numero ?

Gracias por responder.
Responder Con Cita
  #4  
Antiguo 27-09-2016
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Ramsay.

Si el formato en que recibes la fecha siempre es el mismo,
Código:
Sat Dec 24 20:15:04 +0000 2011  ---> 24/12/2011
Tue May 17 15:33:25 +0000 2016  ---> 17/05/2016
... etc
Opino como Neftali; que vas a tener que hacerlo de forma manual.
Código Delphi [-]
uses StrUtils;

function GetDateFormat(Fecha: string): string;
var
  mm: Integer; // ( para dar mas claridad)
begin
  mm := AnsiIndexStr(Copy(Fecha, 5, 3), ['Jan', 'Feb', 'Mar',
    'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']) + 1;
  Result := Format('%s/%.2d/%s',[Copy(Fecha, 9, 2), mm, Copy(Fecha, 27, 4)]);
end;

{ Se podría haber escrito:
function GetDateFormat(Fecha: string): string;
begin
  Result := Format('%s/%.2d/%s',[Copy(Fecha, 9, 2),
    AnsiIndexStr(Copy(Fecha, 5, 3), ['Jan', 'Feb', 'Mar',
    'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']) + 1,
    Copy(Fecha, 27, 4)]);
end;
}

Ejemplo de uso:
Código Delphi [-]
...
begin
   Fecha := 'Tue May 17 15:33:25 +0000 2016';
   ShowMessage(GetDateFormat(Fecha));
...
(*) Es condición necesaria que se respete estríctamente el formato e idioma que indicas para que la función trabaje de modo correcto.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 27-09-2016 a las 23:55:34. Razón: agregar aclaración
Responder Con Cita
  #5  
Antiguo 28-09-2016
Ramsay Ramsay is offline
Miembro
NULL
 
Registrado: ene 2016
Posts: 104
Poder: 9
Ramsay Va por buen camino
ok ,gracias por la ayuda a los dos.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Convertir nvarchar a datetime ingmichel MS SQL Server 1 28-07-2016 22:47:19
convertir una cadena de caracteres a datetime uper MS SQL Server 2 06-06-2013 02:27:45
¿como convertir datetime a fecha Sábado, 16 de Octubre de 2010 - 11:12:48 a.m. ? JXJ Varios 2 17-10-2010 05:44:56
Campo DateTime me lo devuelve como String MaMu MySQL 1 24-03-2008 16:41:44
DateTime y String miguel_fr OOP 11 14-06-2005 05:03:47


La franja horaria es GMT +2. Ahora son las 19:45:22.


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