Hallo,
ich bin gerade dabei ein kleines Tool zu schreiben, welches mir die aktuelle Zeit an zwei Orten auf der Welt anzeigen soll.
Der 1. Ort ist klar der Standort des Rechners also quasi das hier und jetzt. Der zweite Ort soll hingegen ein beliebiger Ort sein.
Alles soweit klein Problem die aktuelle Zeit bekommt man ja Problemlos durch "Now" geliefert. Möchte ich z.b. wissen wie
spät es jetzt in Neuseeland ist, muss ich wissen bzw. angeben in welcher Zeitzone sich der Ort befindet und ob zur zeit
Sommer oder "Winterzeit" herrscht.
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var
sysTime : SYSTEMTIME;
dtRemote : TDateTime;
begin
//Aktuelle Uhrzeit anzeigen
lblLocalTime.Caption := FormatDateTime('hh:nn:ss', Now);
//Aktuelle UTC Zeit ermitteln
GetSystemTime(sysTime);
//UTC in DateTime wandeln
dtRemote := EncodeDateTime(sysTime.wYear, sysTime.wMonth, sysTime.wDay, sysTime.wHour, sysTime.wMinute, sysTime.wSecond, sysTime.wMillisecond);
//Zone "UTC+12 Neuseeland - Hauptgebiet" addieren
dtRemote := IncHour(dtRemote, 12);
//Ortszeit Neuseeland anzeigen
lblRemoteTime.Caption := Format('hh:nn:ss', dtRemote);
Das funktioniert soweit wunderbar, jedoch ist die Zeit falsch, da zur Zeit in Neuseeland Sommerzeit (+1 Std.) ist, müsste
ich noch eine Stunde drauf rechnen, jetzt zum großen Problem.
Gibt es eine Möglichkeit an die Informationen mit Windows Bordmitteln zu gelangen oder muss ich das selbst machen.
Ich müsste jetzt mühselig "alle" Sommerzeitregelungen aus dem Internet recherchieren und durch aufwendige If-Anweisungen
herausfinden ob in der jeweiligen Zeitzone zur Zeit Sommer oder Winterzeit/Normalzeit herrscht.
Beim Beispiel von Neuseeland wäre die Regelung wie folgt.
Sommerzeit Beginn: Letzter Sonntag vor dem 1.Oktober (27.09.09)
Sommerzeit Ende: Erster Sonntag nach dem 1.April (05.04.10)
Meine Hoffnung das es irgendwie einen Trick gibt besser an die Information zu kommen.
Das ganze ist ein Delphi 2007 Prof. Projekt und sollte ab Windows XP oder höher funktionieren.
mfg
TUX