我正在使用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;
答案 0 :(得分:2)
您的时间部分中有UTC -02:00
,当时间转换为当地时间时,您的约会结束时间为前一天。