Я потребляющих веб-сервиса/мыла и загрузка XML таблицы для в ClientDataSet, у меня есть узел с датами в следующем формате:Преобразовать дату и время XML в TDateTime в Delphi
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 - рету rning, это формат даты, используемый в Бразилии (dd/MM/YYYY).
Как я могу это решить? Это связано с моими региональными настройками (Бразилия)?
EDIT
я должен использовать функцию Timezonebias от IdGlobalProtocols исправить дату, выполните следующие ниже функции, чтобы помочь кому-то:
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;
Если вы собираетесь использовать Indy в любом случае, вы можете рассмотреть возможность его синтаксического анализа и ввода, например, с помощью функции 'GMTToLocalDateTime(). –