Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Zeitzonen Berechnen (https://www.delphipraxis.net/76946-zeitzonen-berechnen.html)

robinWie 12. Sep 2006 14:45


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:
Time + StrToTime('09:00:00');
Aber das kommt immer die Falsche Zeit raus.
Kennt jemand einen Algo der das richtig macht?

Danke im Voraus

uwewo 12. Sep 2006 14:54

Re: Zeitzonen Berechnen
 
Wie wäre es hiermit

Delphi-Quellcode:
Var Japan : TDateTime;
begin
 Japan := Time + StrToTime('09:00:00');
end;

robinWie 12. Sep 2006 15:01

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?

uwewo 12. Sep 2006 15:07

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

chrisw 12. Sep 2006 15:10

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;

robinWie 13. Sep 2006 16:09

Re: Zeitzonen Berechnen
 
Es funktioniert! THX

[OT]
Wenn man schreibt
Delphi-Quellcode:
Label1.Caption := FloatToStrF(Now, ffNumber, 20, 20)
kann mal mal sehen, wie das Datum vom Computer dargestellt wird, wenn man es nicht per
Delphi-Quellcode:
TimeToStr()
umwandelt. Ist sehr interessant. [/OT]

himitsu 13. Sep 2006 17:46

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)

robinWie 14. Sep 2006 18:33

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 08:17 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz