Einzelnen Beitrag anzeigen

TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
608 Beiträge
 
Delphi 11 Alexandria
 
#1

Berechnung:Ist grade Sommerzeit in einer bestimmter Zeitzone

  Alt 24. Nov 2009, 14:28
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
  Mit Zitat antworten Zitat