ViaThinkSoft CodeLib
Dieser Artikel befindet sich in der Kategorie:
CodeLib → Programmierhilfen → Delphi
function Rfc3339ToDatetime(rfc: string): TDatetime;
// convert UTC to local time
// https://www.delphipraxis.net/207745-utc-local-time.html
function UTCToLocalDateTime(const UTC: TDateTime): TDateTime;
var
TZI: TTimeZoneInformation;
LocalTime,
UniversalTime: TSystemTime;
begin
GetTimeZoneInformation(TZI);
DateTimeToSystemTime(UTC, UniversalTime);
SystemTimeToTzSpecificLocalTime(@TZI, UniversalTime, LocalTime);
Result := SystemTimeToDateTime(LocalTime);
end;
var
jahr, monat, tag, stunde, minute, sekunde, off_h, off_m: integer;
utc: TDateTime;
begin
// 2020-07-27T10:03:33+0000
// 123456789012345678901234
jahr := StrToInt(Copy(rfc, 1, 4));
monat := StrToInt(Copy(rfc, 6, 2));
tag := StrToInt(Copy(rfc, 9, 2));
stunde := StrToInt(Copy(rfc, 12, 2));
minute := StrToInt(Copy(rfc, 15, 2));
sekunde := StrToInt(Copy(rfc, 18, 2));
off_h := StrToInt(Copy(rfc, 21, 2));
off_m := StrToInt(Copy(rfc, 23, 2));
utc := EncodeDateTime(jahr, monat, tag, stunde-off_h, minute-off_m, sekunde, 0);
result := UTCToLocalDateTime(utc);
end;
Daniel Marschall
ViaThinkSoft Mitbegründer
ViaThinkSoft Mitbegründer