如何将UTC转换为本地时间

时间:2013-04-11 14:22:26

标签: delphi delphi-2010 utc

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

3 个答案:

答案 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