我必须为ePrescribe开发一个应用程序,并且需要将UTC时间值(例如'2010-01-01T16:09:04.5Z')转换为本地时间。 Delphi 2010,有什么建议吗?
答案 0 :(得分:1)
您必须先手动解析字符串。从中提取单个值,然后您可以将它们放入Win32 SYSTEMTIME
记录并调用SystemTimeToTzSpecificLocalTime()
将其从UTC转换为本地。然后,您可以根据需要使用转换后的SYSTEMTIME
,例如使用SystemTimeToDateTime()
将其转换为TDateTime
。
答案 1 :(得分:0)
您的计算机提供您的时区。您可以通过添加小时和分钟来使用它们来操纵UTC时间进行调整。
答案 2 :(得分:0)
您可以使用单位TXSDateTime
XSBuiltIns
课程
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils,
XSBuiltIns;
var xsDateTime: TXSDateTime;
input, output: string;
date: TDateTime;
begin
try
{ TODO -oUser -cConsole Main : Insert code here }
input := '2010-01-01T16:09:04.5Z';
xsDateTime := TXSDateTime.Create;
xsDateTime.XSToNative(input);
date := xsDateTime.AsDateTime;
output := 'Parsed date/time: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss', date);
writeln(output);
readln;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
输出:
Parsed date/time: 2010-01-01 19:09:04