在Delphi中将XML日期和时间转换为Tdatetime

时间:2014-12-07 17:39:59

标签: xml delphi parsing date

我正在使用webservice / soap并为clientdataset加载XML表,我有一个节点,其日期格式为:

2014-01-01T00:00:00.0000000-02:00

我正在尝试将此类型的数据转换为区域我的类型,我使用此方法:

class function TDateConvert.DateTimeFromIso8601(const Value: string): TDateTime;
begin
  with TXSDateTime.Create() do
  try
    XSToNative(value); // convert from WideString
    Result := AsDateTime; // convert to TDateTime  finally
  finally
    Free();
  end;
end;

我收到了,但是日期出错了,使用上面的示例而不是返回01/01/2014 31/12/2013返回,这是巴西使用的日期格式(dd / MM / YYYY)。

我该如何解决这个问题?这与我的区域设置(巴西)有关吗?

修改

我必须使用IdGlobalProtocols中的Timezonebias函数来更正日期,按照下面的函数来帮助某人:

class function TDateConvert.DateTimeFromIso8601(const Value: string): TDateTime;
begin
  with TXSDateTime.Create() do
  try
    XSToNative(value); // convert from WideString
    Result := AsDateTime+TimeZoneBias; // convert to TDateTime  finally with sum of timezone bias
  finally
    Free();
  end;
end;

1 个答案:

答案 0 :(得分:2)

您的时间部分中有UTC -02:00,当时间转换为当地时间时,您的约会结束时间为前一天。