![]() |
Zeitzonen Berechnen
Hallo,
ich möchte mir eine Uhr basteln, die mit die Uhrzeit in anderen Ländern anzeigt. Nehmen wir mal als Beispiel Japan. Die haben GMT + 9:00. Aber wie kann ich das realisieren, dass ein Timer jede Sekunde die Zeit neu berechnet. Das ist mein Ansatz
Delphi-Quellcode:
Aber das kommt immer die Falsche Zeit raus.
Time + StrToTime('09:00:00');
Kennt jemand einen Algo der das richtig macht? Danke im Voraus |
Re: Zeitzonen Berechnen
Wie wäre es hiermit
Delphi-Quellcode:
Var Japan : TDateTime;
begin Japan := Time + StrToTime('09:00:00'); end; |
Re: Zeitzonen Berechnen
Passt auch net.
Etwas mit den Zahlen muss nicht stimmen. Das müsste 23 Uhr rauskommen [wenn es hier 16 Uhr ist] aber es kommt 1 Uhr raus. :gruebel: Wenn ich von den 9 Stunden zwei abzieh, pass es. Ich finde das Seltsam. Gibt es das eigentlich einen Unterschied zwischen Winter- & Sommerzeit, den man in die Berechnungen einbeziehen muss? |
Re: Zeitzonen Berechnen
Es müßte 01 Uhr rauskommen und genau das macht es auch, zumindest bei mir.
16 + 9 = 25 Da wir nur 24 Stunden Zyklus haben = 1 Uhr |
Re: Zeitzonen Berechnen
Ich denke Du musst die eigene ZeitZone (GMT+1) bzw (GMT +2 bei Sommerzeit) abziehen.
Guckst Du.
Delphi-Quellcode:
function GetGMTDiff (diff : Integer): TDateTime;
var TZ : Time_Zone_Information; h,m,s,milsec : Word; begin DecodeTime(now,h,m,s,milsec); GetTimeZoneInformation(TZ); h := h + diff + TZ.Bias div 60; //TZ.Bias div 60 ist bei GMT +1 :-1 if h >= 24 then h := h -24; Result := EncodeTime(h,m,s,milsec); end; procedure TForm1.Button1Click(Sender: TObject); var TZ : Time_Zone_Information; h,m,s,milsec : Word; begin Showmessage(TimeToStr(GetGMTDiff(9))); end; |
Re: Zeitzonen Berechnen
Es funktioniert! THX
[OT] Wenn man schreibt
Delphi-Quellcode:
kann mal mal sehen, wie das Datum vom Computer dargestellt wird, wenn man es nicht per
Label1.Caption := FloatToStrF(Now, ffNumber, 20, 20)
Delphi-Quellcode:
umwandelt. Ist sehr interessant. [/OT]
TimeToStr()
|
Re: Zeitzonen Berechnen
Das braucht man aber doch nicht sehen?
Es steht doch genau in der OH drin, wie es verwaltet wird. :zwinker: Ganzzahlanteil = Tage seit 'nem bestimmten Datum Nachkommaanteil = Anteil des Tages Sprich: 0.xxxxx = Stunden/24 = Minuten/2440 = .... (0.5=12:00, 0.25=06:00, 0.75=18:00) |
Re: Zeitzonen Berechnen
Ne braucht man eigentlich nicht wissen. Eigenttlich schwachsinn sich das in eine Progi einzubauen. Aber für einen kleinen Gack nicht schlecht :stupid:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:36 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-2025 by Thomas Breitkreuz