Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Nur Mittel Europäsche Winterzeitzeit (MEZ) (https://www.delphipraxis.net/150970-nur-mittel-europaesche-winterzeitzeit-mez.html)

Uwe 111 1. Mai 2010 20:23


Nur Mittel Europäsche Winterzeitzeit (MEZ)
 
Hallo

Mein Problem ist, das im Countdownzähler nicht das die Sommerzeit umgeschalten wird.
Wie hier in den link Condownzähler

mein Quellcode ist
Delphi-Quellcode:
function TForm1.GetMEZ: TDateTime;
var
  ST : SystemTime;
  TZ : TTimeZoneInformation;
begin
  DecodeDateTime(Now,ST.wYear,ST.wMonth,ST.wDay,ST.wHour,ST.wMinute,ST.wSecond,ST.wMilliseconds);
  GetTimeZoneInformation(TZ);
  if TZ.DaylightBias >= 0 then
    begin
      ST.wHour := ST.wHour + TZ.Bias + TZ.StandardBias;
      ST.wDay := ST.wDay + TZ.Bias + TZ.StandardBias;
    end;
  Result := EncodeDateTime(ST.wYear,ST.wMonth,ST.wDay,ST.wHour,ST.wMinute,ST.wSecond,ST.wMilliseconds);
end;
Aber leider funktioniert es nicht so, kann mir da mal jemand Helfen.

MfG
Uwe

daywalker9 1. Mai 2010 20:42

Re: Nur Mittel Europäsche Winterzeitzeit (MEZ)
 
Vielleicht hilft dir das Weiter:
MEZ

edit:
Verschiedene Zeitzonen

Uwe 111 1. Mai 2010 21:12

Re: Nur Mittel Europäsche Winterzeitzeit (MEZ)
 
Hallo

Mit der Zeit habe ich es hin bekommem, aber der Tag wird nicht bei 00:00:00 abgezogen.

Delphi-Quellcode:
function TForm1.GetMEZ: TDateTime;
var
  ST : SystemTime;
begin
  DecodeDateTime(Now,ST.wYear,ST.wMonth,ST.wDay,ST.wHour,ST.wMinute,ST.wSecond,ST.wMilliseconds);
  GetSystemTime(ST);
  ST.wHour := ST.wHour + 1;
  // Überprüfen, ob die Stunde > 24 ist
  if ST.wHour >= 24 then
   ST.wHour := ST.wHour -24
  else
  // Überprüfen, ob die Stunde < 0; bzw bei Word > 65000 ; dann 24 Stunden hinzuzählen;
  if ST.wHour > 65000 then
   ST.wHour := ST.wHour + 24;
  Result := EncodeDateTime(ST.wYear,ST.wMonth,ST.wDay,ST.wHour,ST.wMinute,ST.wSecond,ST.wMilliseconds);
end;
MfG
Uwe

Uwe 111 1. Mai 2010 21:51

Re: Nur Mittel Europäsche Winterzeitzeit (MEZ)
 
hallo

Der Tag wird erst wird erst um 2:00 Uhr abgezogen, wie kann ich das ändern.

MfG
Uwe

Reinhard Kern 2. Mai 2010 12:58

Re: Nur Mittel Europäsche Winterzeitzeit (MEZ)
 
Zitat:

Zitat von Uwe 111
hallo

Der Tag wird erst wird erst um 2:00 Uhr abgezogen, wie kann ich das ändern.

MfG
Uwe

Hallo,

eine saubere Lösung wäre, Now in MEZ umzuwandeln und die Rechnung in MEZ bzw. Standardzeit durchzuführen. Aber du fragst ja noch nicht mal, ob überhaupt Sommerzeit ist.

Da man nicht ganz ausschliessen kann, dass Politiker einen Anfall von Vernunft haben, sollte man auch berücksichtigen, dass die Sommerzeit womöglich abgeschafft wird, aber das ergibt sich bei einer korrekten Abfrage automatisch.

Gruss Reinhard

shmia 3. Mai 2010 16:04

Re: Nur Mittel Europäsche Winterzeitzeit (MEZ)
 
Ich schlage vor man holt sich die Zeit in UTC und rechnet dann in MEZ um.
Für die UTC Zeit gibt es folgende Unit:
Code-Library: lokale Zeit und UTC
Demnach wäre MEZ:
Delphi-Quellcode:
function NowMEZ:TDateTime;
const
   ONE_HOUR = 1.0/24.0;
begin
  result := NowUTC + ONE_HOUR;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:06 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