Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

 
 
Herramientas Buscar en Tema Desplegado
  #6  
Antiguo 04-03-2012
Leviatan Leviatan is offline
Miembro
 
Registrado: oct 2005
Posts: 56
Poder: 19
Leviatan Va por buen camino
Gracias ecfisa.

Lo resolví de una manera similar a lo que me estás comentando:

Código Delphi [-]
function FormatearFechaHora(Cadena: string): string;
var
  Anio, Mes, Dia, Hora, Min, Seg, sFecha: string;
  FechaHora: TDateTime;
  iDia, iMes, iAnio: Integer;
begin
  Anio := Copy(Cadena, 1, 4);
  Mes := Copy(Cadena, 5, 2);
  Dia := Copy(Cadena, 7, 2);
  Hora := Copy(Cadena, 9, 2);
  Min := Copy(Cadena, 11, 2);
  Seg := Copy(Cadena, 13, 2);

  // Deducir el formato de la fecha
  iDia := Pos('d', SysUtils.ShortDateFormat);
  if iDia = 0 then
    iDia := Pos('D', SysUtils.ShortDateFormat);

  iMes := Pos('m', SysUtils.ShortDateFormat);
  if iMes = 0 then
    iMes := Pos('M', SysUtils.ShortDateFormat);

  iAnio := Pos('y', SysUtils.ShortDateFormat);
  if iAnio = 0 then
    iAnio := Pos('Y', SysUtils.ShortDateFormat);

  if (iDia < iMes) and (iDia < iAnio) and (iMes < iAnio) then
  begin
    if Pos('/', SysUtils.ShortDateFormat) > 0 then
      sFecha := Dia + '/' + Mes + '/' + Anio + ' ' + Hora + ':' + Min + ':' + Seg
    else
    if Pos('-', SysUtils.ShortDateFormat) > 0 then
      sFecha := Dia + '-' + Mes + '-' + Anio + ' ' + Hora + ':' + Min + ':' + Seg
  end
  else
  if (iMes < iDia) and (iMes < iAnio) and (iDia < iAnio) then
  begin
    if Pos('/', SysUtils.ShortDateFormat) > 0 then
      sFecha := Mes + '/' + Dia + '/' + Anio + ' ' + Hora + ':' + Min + ':' + Seg
    else
    if Pos('-', SysUtils.ShortDateFormat) > 0 then
      sFecha := Mes + '-' + Dia + '-' + Anio + ' ' + Hora + ':' + Min + ':' + Seg
  end
  else
  if (iAnio < iDia) and (iAnio < iMes) and (iMes < iDia) then
  begin
    if Pos('/', SysUtils.ShortDateFormat) > 0 then
      sFecha := Anio + '/' + Mes + '/' + Dia + ' ' + Hora + ':' + Min + ':' + Seg
    else
    if Pos('-', SysUtils.ShortDateFormat) > 0 then
      sFecha := Anio + '-' + Mes + '-' + Dia + ' ' + Hora + ':' + Min + ':' + Seg;
  end;

  FechaHora := StrToDateTime(sFecha);

  Result := AnsiReplaceStr(FormatDateTime('yyyy-mm-dd hh:mm:ss', FechaHora), ' ', 'T');
end;

Inclusive tengo que decirle a la aplicación si los separadores serán barras o guiones, porque aún en esto me daba error de formato.

Gracias y saludos.

Última edición por Leviatan fecha: 04-03-2012 a las 17:44:20.
Responder Con Cita
 



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
Problema con formatos de idioma Windows 7 SAGOAN Varios 6 04-07-2011 10:37:28
Consulta con formatos de fecha pau_elx SQL 4 26-05-2011 08:13:37
convertir formatos fecha davidgaldo Varios 4 09-11-2005 15:49:35
Fecha de Windows sebas API de Windows 1 08-07-2003 18:42:20
Bloquear Fecha en Windows Gabriel A Reyes API de Windows 9 04-07-2003 14:11:14


La franja horaria es GMT +2. Ahora son las 08:04:55.


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