Lohnt es sich es zu versuchen mit TDateFormat?
Eher nicht.
Ich würde einen Wrapper um ISOISO601ToDate machen, der bei Bedarf den Doppelpunkt im Zeit-Offset ergänzt:
Delphi-Quellcode:
function ISO8601ToDate(const AISODate: string; AReturnUTC: Boolean = True): TDateTime;
var
idxSign: Integer;
S: string;
begin
S := AISODate;
idxSign := S.LastIndexOfAny(['+', '-']);
if S.LastIndexOf(':') < idxSign then
S := S.Insert(idxSign + 3, ':');
Result := System.DateUtils.ISO8601ToDate(S, AReturnUTC);
end;
Bei einem Update auf 10.3.3+ kannst du den ja wieder rausnehmen.