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);
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.