Hallo zusammen.
Ich weiss der Thread ist schon etwas älter.
Ich habe den original Thread in dem Jurs seine geniale Formel vorstellt nicht mehr gefunden.
Ich habe diese bei mir in eine Bibliothek eingebaut und beim testen gemerkt, dass etwas nicht stimmt.
Hier noch einmal die betreffende Codezeile von Jurs
if (month==3 && (hour + 24 * day)>=(1 + tzHours + 24*(31 - (5 * year /4 + 4) % 7)) || month==10 && (hour + 24 * day)<(1 + tzHours + 24*(31 - (5 * year /4 + 1) % 7)))
return true;
else
return false;
}
So lange ich mit MEZ, also tzHours= 1 teste, ist alles ok.
Wenn ich aber mit GMT also tzHours = 0 teste, funktioniert die Umschaltung nicht um 2:00 Uhr sondern um 1:00
Wenn ich die entsprechende Zeile im Code (den ich nur ansatzweise verstehe)

so ändere, funktioniert alles.
if (month==3 && (hour + 24 * day)>=(2 - tzHours + 24*(31 - (5 * year /4 + 4) % 7)) || month==10 && (hour + 24 * day)<(2 - tzHours + 24*(31 - (5 * year /4 + 1) % 7)))
Die Detektierung der Umschaltung gilt ja immer für die Ortszeit. bei tzHours = 1 + 1 bin ich bei 2:00 Uhr Ortszeit. Bei tzHours = 0 (GMT) + 1 ist das Resultat aber schon um 1:00 true, also eine Stunde zu früh.
Vermutlich mache ja ich einen Überlegungsfehler. Immer wenn es um Verschiebung von Zeit geht wird mir ganz schummrig.
Kann das jemand ohne viel Aufwand nachvollziehen?
Umstellung 2018: 25. März 2:00 Ein / 28. Okt. 2:00 Aus
Danke schon jetzt.