Einzelnen Beitrag anzeigen

samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#2

AW: Konvertierung UnixTimeStamp nacht TDateTime und zurück

  Alt 5. Jun 2018, 07:53
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;
  Mit Zitat antworten Zitat