1

这是一些代码:

WideString dt = L"2019-04-06T11:08:19.578+01:00";
TXSDateTime * utc = new TXSDateTime();

utc->XSToNative(dt);

ShowMessage(utc->AsDateTime.DateTimeString());
ShowMessage(utc->AsUTCDateTime.DateTimeString());
ShowMessage(String(utc->HourOffset));

我希望 ...AsDateTime 和 ...AsUTCDateTime 行返回不同的结果。但他们没有。在这两种情况下,结果都是:

2019 年 6 月 4 日 10:08:19

HourOffset 是 1,所以 AsUTCDateTime 不应该返回 11:08:19 作为时间部分吗?还是我误解了这些功能的工作原理?

4

1 回答 1

1

通读XBUtils.pas,有2个功能:

function TXSBaseCustomDateTime.GetAsDateTime: TDateTime;(第 1448 行)

function TXSBaseCustomDateTime.GetAsUTCDateTime: TDateTime;(第 1478 行)

UTC 版本采用日期字符串并将其调整 1 小时。

非 UTC 版本采用字符串中的日期,并通过字符串中的时间偏移量和本地计算机与 UTC 的时区偏移量来调整它。

由于我在伦敦,本地偏移量目前为 0,因此巧合的是,这两个函数的结果是相同的。如果夏令时处于活动状态,则非 UTC 版本将为此进行调整,并给出不同的结果。

于 2020-12-11T17:45:50.950 回答