var
tm : string;
dt : tdatetime;
tm := '2009-08-21T09:11:21Z';
dt := ?
我知道我可以手動解析它,但我不知道是否有任何內置函數或Win32 API函數來執行此操作?在Delphi中將UTC字符串轉換爲TDatetime
var
tm : string;
dt : tdatetime;
tm := '2009-08-21T09:11:21Z';
dt := ?
我知道我可以手動解析它,但我不知道是否有任何內置函數或Win32 API函數來執行此操作?在Delphi中將UTC字符串轉換爲TDatetime
這看起來像一個互聯網協議相關的活動,所以你應該沒有問題在使用Win32 API。但是,請注意,對於歷史日期超過約20年的Windows,Windows不能正確支持轉換爲UTC的轉換 - Windows在其時區設置中沒有足夠的詳細信息。
我不知道爲什麼有這麼多人在他們不知道自己在說什麼的時候開口說話?我必須做這個卑鄙的工作;它是一個RAD工具嗎?儘管如此,我有時會發現德爾福有一個非常棒的體系結構。
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
1)您覆蓋全局格式變量,這是不好的事情。考慮使用線程安全例程。 2)你忽略時區。 3)雖然trunc()和frac()是有效的,但是將來可能會改變。使用DateOf()和TimeOf()可以使代碼更加便攜和清晰。 – Fr0sT 2014-12-08 08:07:03
如果使用印地10,其StrInternetToDateTime()
和GMTToLocalDateTime()
函數(在IdGlobalProtocols
單元)可以解析ISO-8601格式的字符串。
寫完我自己的班級來處理這個問題,並完全遵守標準,這是相當複雜的。會對這個問題的任何更快的解決方案感興趣。 – Gerard 2009-10-20 23:16:04
'標準'是ISO 8601 – Gerard 2009-10-20 23:18:53
相關問題:http://stackoverflow.com/questions/1438870/in-delphi-is-there-a-function-to-convert-xml-date-and-time-to- tdatetime – mghie 2009-10-21 04:36:03