Die Zeitzone würde ich gesondert behandeln. D.h. ich würde den Datetimewert vor der Konvertierung in UTC umrechnen und dann in die Unixtimestamp umrechnen. Im umgekehrten Fall würde ich den berechneten Datetimewert wieder in lokale Zeit umrechnen, falls das erforderlich sein sollte. Hier mein Vorschlag für die Umrechnung von UTC-Datetimewerte in die Unixtimestamp und zurück (nur grob mit einigen Testdaten von
https://www.freeformatter.com/epoch-...converter.html getestet):
Delphi-Quellcode:
uses
System.SysUtils;
(*
{ Days between TDateTime basis (12/31/1899) and Unix time_t basis (1/1/1970) }
UnixDateDelta = 25569;
*)
function UnixTimeToDatetime(UnixTime: Int64): TDatetime;
begin
Result := UnixTime/SecsPerDay + UnixDateDelta;
end;
function DatetimeToUnixTime(Datetime: TDatetime): Int64;
var
t: TDatetime;
begin
t := Datetime - UnixDateDelta;
if t>=0
then
Result := trunc(t*SecsPerDay + 0.5)
else
Result := trunc(t*SecsPerDay - 0.5);
end;