Convert UTC string to TDatetime in Delphi
1 2 3 4 5 6 | var tm : string; dt : tdatetime; tm := '2009-08-21T09:11:21Z'; dt := ? |
我知道我可以手动解析它,但我想知道是否有任何内置函数或Win32 API函数来执行此操作?
我不知道为什么当他们不知道他们在谈论什么时会有这么多人开枪? 我必须做这个卑鄙的工作; 它是RAD工具吗? 我有时会发现Delphi有一个非常棒的架构。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | 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 EConvertError do 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; |
http://coding.derkeiler.com/Archive/Delphi/comp.lang.pascal.delphi.misc/2006-08/msg00190.html
如果您使用的是Indy 10,则其
这看起来像是与Internet协议相关的活动,因此您在使用Win32 API时应该没有任何问题。 但请注意,对于超过大约20年的历史日期,Windows无法正确支持与UTC的转换 - Windows在其时区设置中根本没有足够的详细信息。