Home » Tipps & Tricks » Object Pascal » Datumswerte » Zeitformat von TDateTime ins UNIX-Format
Zeitformat von TDateTime ins UNIX-Format
Die folgende Funktion konvertiert ein ’normales‘ Datum in einen unix-Timestamp. Der Parameter UseBias gibt an, ob Zeitverschiebung mit beachtet werden soll.
function TimeStampHumanToUnix(const HumanStamp: tDateTime; UseBias: boolean): cardinal; var iTime: integer; hh, mm, ss, ms: word; TZI: TTimeZoneInformation; const FirstOf1970 = 25569; //[s] seit 30.12.1899 bis 01.01.1970 (WinZeit -> UnixZeit) OneDay = 86400; //in [s] OneHour = 3600; //in [s] OneMinute = 60; //in [s] begin Result := 0; case GetTimeZoneInformation(TZI) of $FFFFFFFF: UseBias := False; end; DecodeTime(HumanStamp, hh, mm, ss, ms); { Tage seit 1.1.1970 in Sekunden } iTime := (Trunc(HumanStamp) - FirstOf1970) * OneDay; { Stunden und Minuten und Sekunden aufaddieren } iTime := iTime + (hh * OneHour); if UseBias then iTime := iTime + ((mm + TZI.Bias + TZI.DaylightBias) * OneMinute) else iTime := iTime + (mm * OneMinute); iTime := iTime + ss; if iTime < 0 then iTime := 0; Result := iTime; end;