![]() |
Unix Timestamp
Wenn ich die Uhrzeit 19:45h per DateTimeToUnix umwandel, bekomme ich auf dem Server 21:45h angezeigt, jemand eine Ahnung warum?
Delphi-Quellcode:
Kann das am Server liegen oder am Script?
const
// Sets UnixStartDate to TDateTime of 01/01/1970 UnixStartDate: TDateTime = 25569.0; function DateTimeToUnix(ConvDate: TDateTime): Longint; begin //example: DateTimeToUnix(now); Result := Round((ConvDate - UnixStartDate) * 86400); form1.edit17.text:=inttostr(Result); end; //DateTimeToUnix(now); Grüße Horst |
Re: Unix Timestamp
Wenn der Server in Dtl. steht, dann ist er GMT+1+DST (DST = +1)
Also stimmt die Ausgabe ... jetzt mußt du entsprechend der Richtung in die du konvertierst, entweder vor oder nach der Abfrage in oder von GMT von oder nach Lokalzeit konvertieren. Ich vergaß: DST = Daylight Saving Time (auch als Sommerzeit bekannt). |
Re: Unix Timestamp
Aha...hmm, wie muss ich das nun machen, ich versteh das grad nicht ganz.
DST = Daylight Saving Time, ich habe hier schon die Sommerzeit. |
Re: Unix Timestamp
Warum hast du eine eigene DateTimeToUnix Funktion gemacht? In der Unit "dateutils" gibt es schon eine fertige, kannst dazu auch mal in der OH nachsehen.
MfG Pr0g |
Re: Unix Timestamp
FileTimeToLocalFileTime() oder LocalFileTimeToFileTime() benutzen. Allerdings muß dazu die Zeit vorher in dem Format vorliegen, welches Windows versteht (eben FILETIME).
|
Re: Unix Timestamp
Ich habs nun raus, vielen Dank für eure Hilfe :)
|
Re: Unix Timestamp
Wäre schön, wenn du die Lösung posten würdest, dann können auch andre davon profitieren :)
|
Re: Unix Timestamp
Gerne :)
Delphi-Quellcode:
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz