Convert UTC string to TDatetime in Delphi
eg. var tm : string; dt : tdatetime;
tm := '2009-08-21T09:11:21Z'; dt := ?
procedure setISOtoDateTime(strDT:string);
var
// Delphi settings save vars
ShortDF,ShortTF:string;
TS, DS :char;
// conversion vars
dd, tt, ddtt:TDateTime;
begin
// example datetime test string in ISO format
strDT :='2009-07-06T01:53:23Z';
// save Delphi settings
DS :=DateSeparator;
TS :=TimeSeparator;
ShortDF:=ShortDateFormat;
ShortTF:=ShortTimeFormat;
// set Delphi settings for string to date/time
DateSeparator:='-';
ShortDateFormat:='yyyy-mm-dd';
TimeSeparator:=':';
ShortTimeFormat:='hh:mm:ss';
// convert test string to datetime
try
dd :=StrToDate(Copy(strDT,1,Pos('T',strDT)-1));
tt :=StrToTime(Copy(strDT,Pos('T',strDT)+1,8));
ddtt := trunc(dd)+ frac(tt);
except
on EConvertErrordo
ShowMessage('Error in converting : '+ strDT);
end;
// restore Delphi settings
DateSeparator:= DS;
ShortDateFormat:=ShortDF;
TimeSeparator:= TS;
ShortTimeFormat:=ShortTF;
// display test string
ShowMessage(FormatDateTime('mm/dd/yyyy hh:mm:ss', ddtt));
end;