1

我必须为 ePrescribe 开发一个应用程序,并且需要将 UTC 时间值(例如 '2010-01-01T16:09:04.5Z')转换为本地时间。Delphi 2010,有什么建议吗?

4

3 回答 3

1

您必须先手动解析字符串。从中提取各个值,然后您可以将它们放入 Win32SYSTEMTIME记录并调用SystemTimeToTzSpecificLocalTime()以将其从 UTC 转换为本地。然后,您可以根据SYSTEMTIME需要使用转换后的内容,例如将其转换为TDateTimeusing SystemTimeToDateTime()

于 2013-04-11T17:36:24.480 回答
0

您的计算机提供您的时区。您可以使用它们来操纵 UTC 时间,通过添加小时和分钟来进行调整。

于 2013-04-11T14:28:08.773 回答
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
于 2014-01-10T09:48:22.997 回答