Home » Tipps & Tricks » Object Pascal » Datumswerte » Zeitformat vom UNIX-Format in TDateTime

Zeitformat vom UNIX-Format in TDateTime

Die Funktion wandelt einen Unix-Timestamp in ein ’normales‘ Datum um. Der Parameter UseBias gibt an, ob Zeitverschiebung mit beachtet werden soll.

function TimeStampUnixToHuman(const UnixStamp: cardinal;
                              UseBias: boolean): TDateTime;
var
  Date: TDateTime;
  iUnix: cardinal;
  hh, mm, ss: cardinal;
  TZI: TTimeZoneInformation;

const
  FirstOf1970 = 25569;

begin
  Result := Firstof1970;

  case GetTimeZoneInformation(TZI) of
    $FFFFFFFF: UseBias := False;
  end;


  if UseBias
  then iUnix := UnixStamp - ((TZI.Bias + TZI.DaylightBias) * 60)
  else iUnix := UnixStamp;
  hh := iUnix mod 86400;
  mm := hh mod 3600;
  hh := hh div 3600;
  ss := mm mod 60;
  mm := mm div 60;
  Result := (UnixStamp div 86400) + FirstOf1970 + EncodeTime(hh, mm, ss, 0);

end;