Sommerzeit-Formel
Verfasst: Mo 19 Jan 2004, 21:28
Thema des Beitrags:
Herleitung einer Formel zur Ermittlung der Sommerzeit anhand von Datum und Uhrzeit laut MEZ. Das eigentliche Ergebnis, also die Formel ist grün dargestellt.
Wann ist eigentlich Sommerzeit?
Die Umstellung erfolgt immer am letzten Sonntag in März und am letzten Sonntag im Oktober. Dafür gilt es in Abhängigkeit des aktuellen Jahres das jeweilige Datum zu berechnen.
Sommerzeitanfang:
Der März und der Oktober haben jeweils 31 Tage, somit ist der letzte Sonntag immer zwischen dem 25. und dem 31. Im Jahr 2000 war der Sommerzeitanfang am 26.03. Ein normales Kalenderjahr hat 365 Tage, das sind 52 Wochen und 1 Tag. Somit verschieben sich die Wochentage gegen das Datum um einen Tag pro Jahr. Der letzte Sonntag im März ist im Folgejahr 2001 nicht der 26. sondern der 25. Ein Schaltjahr hat 366 Tage, das sind 52 Wochen und 2 Tage. Im Schaltjahr verschieben sich die Wochentage um 2 Kalendertage. Basierend auf die Ausgangssituation von 2000 mit dem So., den 26.03., kann man für ein beliebiges späteres Jahr errechnen wieviele Jahr seit 2000 vergangen sind und für jedes Jahr einen Tag vom Datum abziehen. Darüber hinaus gilt es festzustellen wieviele Schaltjahr dabei sind und für jedes Schaltjahr muss dann einen weiterer Tag abgezogen werden.
Das gesuchte Datum würde sich so aber beliebig weit vor verschieben. Da wir uns nicht dafür interessieren wann unser Ausgangssonntag ist, sondern wann der letzte Sonntag vom März ist, dürfen wir nicht einfach die Summe der errechneten Tage abziehen. Zuerst müssen alle ganzen Wochen aus der Tagesanzahl raus gerechnet werden und dann nur der Rest der Tagesanzahl vom Datum abgezogen
werden. Falls das Datum dadurch kleiner als der 25. wird, dann müssen noch einmal 7 Tage hinzu gezählt werden. Dann ist es das Datum des letzten Sonntags im März.
Sommerzeitende:
Das Ende der Sommerzeit, also das Datum des letzten Sonntag im Oktober, ist recht leicht zu ermitteln, wenn das Datum des Sommerzeitanfangs schon bekannt ist. Es ist einfach 3 höher als das des Anfangs oder 4 kleiner, je nachdem was in den Intervall 25. bis 31. fällt. Die Sommerzeit ist, je nach Lage der Sonntage, entweder 210 oder 217 Tage, also 30 oder 31 Wochen lang. Es sind immer ganze Wochen, da sie von Sonntag bis Sonntag geht. Für das Datum ist aber relevant, dass die Monate nicht 28 Tage habe sondern 28 bis 31 Tage, also um 0 bis 3 Tage länger sind als 4 ganze Wochen. Beim Folgemonat ist das Datum der "gleichen" Wochentage also um 0 bis 3 Tage kleiner.
Für die Monate der Sommerzeit ergeben sich daraus insgesamt 18 Tage, die man abziehen müsste, da wir uns aber wieder für den Letzten Sonntag des Monats (Oktober) interessieren muss man den Sonntag nehmen, der nach Abzug der 18 Tage dann 3 oder 2 Wochen später liegt. Schaltjahre spielen hier keine Rolle, da der Schalttag immer in der Winterzeit liegt (29.02.).
Rechnerisch heißt das:
So. 26.(03.) - 18 Tage = So. 08.(10.)
So. 08.(10.) + 3 Wochen = So. 29.(10.)
In einem Schritt heißt das +3 Tage (-18 + 21 = +3) => So. 26.(03.) + 3 = So. 29.(10.).
Für den Fall das sich daraus ein Datum größer 31 ergibt, muss man einfach 7 Tage abziehen.
Wann ist ein Schaltjahr?
Dazu gibt es drei Regeln:
1. Alle Jahre die sich ohne Rest durch 4 teilen lassen sind ein Schaltjahr (2000, 2004, 2008 ...).
2. Alle Jahre die sich ohne Rest durch 100 teilen lassen sind ausnahmsweise kein Schaltjahr (2100, 2200, 2300 ...).
3. Alle Jahre die sich ohne Rest durch 400 teilen lassen sind dann doch wieder ein Schaltjahr (2000, 2400, 2800 ...)
Das Jahr 2000 war wegen 1. ein Schaltjahr, hätte wegen 2. keins sein sollen, war aber wegen 3. doch ein. Diese Ausnahme von der Ausnahme findet planmäßig alle 400 Jahre statt. Deswegen bietet er sich an vom Jahr 2000 an zu rechnen, genauso gut könnte man rechnerisch auch das Jahr 0 als Basis nehmen, das würde aber zu der Annahme verleiten, dass unser Kalender in den letzten 2000 Jahren schon nach diesen Regeln berechnet wurde, aber das ist falsch. Diese Regeln sind relativ neu, vor Allem im Bezug auf ihre praktische Anwendung, vorher wurde der Kalender mehrfach zu unregelmäßigen Zeiten um diverse Tage angepasst. Aber das nur nebenbei.
Wieviel Jahre und Schaltjahre sind z.B. im Jahr 2013 seit 2000 vergangen?
2013-2000=13; damit ergibt sich eine Verschiebung des Sonntags um 13 Kalendertage.
13/4=3,25; abgerundet sind das 3, somit liegen in diesen 13 Jahren 3 Schaltjahre für die jeweils ein weiterer Tag Verschiebung zu berechnen ist.
Verschiebung 13+3=16
Eine Verschiebung von jeweils 7 Tagen = 1 Woche ist rechnerisch zu missachten, da der Sonntag dann nicht mehr der letzte im Monat wäre. Also rechnen wir aus den Verschiebungstagen die ganzen Wochen raus.
16/7 = 2 Rest 2; die 2 Ganzen vergessen wir und behalten die 2 Rest.
Dann müssen wir vom 26. 2 Tage abziehen, das wäre der 24., da der 24. unterhalb des möglichen Intervalls 25.-31. liegt ist er zwar noch ein Sonntag, aber nicht mehr der letzte im März, der ist dann eine Woche später. Daraus folgt 24. + 7 Tage ist der Sonntag der 31.
Was passiert wann bei der Sommerzeit?
Die Sommerzeit ist die MEZ + 1 Stunde. Die Winterzeit ist MEZ. Praktisch heißt das, dass am Letzten Sonntag im März die Uhr um 2 Uhr (MEZ) auf 3 Uhr (MEZ+1) vorgestellt wird und am letzten Sonntag im Oktober um 3 Uhr (Sommerzeit=MEZ+1) auf 2 Uhr (MEZ) zurück gestellt wird.
Für das Jahr 2000 (26.03.-29.10.) heißt das:
Wenn laut MEZ "Jetzt" größer oder gleich "26.03.-2:00h" ist dann ist Sommerzeit.
Aber wenn laut MEZ "Jetzt" größer oder gleich "31.03.-2:00h" ist dann wieder Winterzeit.
Berechnung der Sommerzeitperiode für ein beliebiges Jahr genannt JAHR (bei
JAHR >= 2000)
Berechnung:
Anzahl_Jahre = JAHR-2000
Anzahl_Schaltjahre = abgerundet(Anzahl_Jahre/4) - abgerundet(Anzahl_Jahre/100) +
abgerundet(Anzahl_Jahre/400)
Verschiebung_brutto = Anzahl_Jahre + Anzahl_Schaltjahre
Verschiebung_netto = Verschiebung_brutto - (abgerundet(Verschiebung_brutto/7))*7
Anfangs_Tag = 26 - Verschiebung_netto
Wenn Anfangs_Tag < 25 dann Anfangs_Tag = Anfangs_Tag + 7
Ende_Tag = Anfangs_Tag + 3
Wenn Ende_Tag > 31 dann Ende_Tag = Ende_Tag - 7
Ergebnis:
Die Sommerzeit beginnt am Anfangs_Tag.März.JAHR
Die Sommerzeit endet am Ende_Tag.Oktober.JAHR
Prüfung auf Sommerzeit:
Man nehme das aktuelle Datum und die aktuelle Uhrzeit laut MEZ und zerlege es in einzelne Zahlen. Dann nehme man Anfang und Ende der Sommerzeit laut MEZ und zerlege es auch in einzelne Zahlen. Die jeweiligen Zahlen des Monats, des Tages und der Stunde sind relevant. Daraus basteln wir uns eine Vergleichszahl, indem wir sie zu einer sechsstellige Zahl zusammen fügen nach dem Muster: MMTThh. Wir betrachten als Beispiel wieder das Jahr 2000:
Sommerzeit Anfang 26.03. 02:00h => 032602
Winterzeit Anfang 29.10. 02:00h => 102902
Jetzt ist z.B. der 17.06. 14:12h => 061714
Vergleich: 061714 ist größer oder gleich 032602 und 061714 kleiner als 102902.
Daraus folgt, dass Jetzt in der Sommerzeit liegt.
Als Formel würde das so aussehen:
Anfang = 30000 + Anfangs_Tag * 1000 + 2
Ende = 100000 + Ende_Tag * 1000 + 2
Jetzt = (Monat von heute) * 10000 + (Tag von heute) * 1000 + (Stunde von Jetzt)
Sommer = falsch
Wenn Jetzt >= Anfang dann Sommer = wahr
Wenn Jetzt > Ende dann Sommer = falsch
Jetzt, Anfang und Ende muss zum Vergleich in MEZ betrachtet werden. Für den Fall, dass Sommerzeit ist, muss zu Jetzt eine Stunde hinzugefügt werden. Dabei kann sich ab 23:00 Uhr natürlich auch der Tag ändern und damit auch möglicherweise der Monat.
Gruß Frank
Herleitung einer Formel zur Ermittlung der Sommerzeit anhand von Datum und Uhrzeit laut MEZ. Das eigentliche Ergebnis, also die Formel ist grün dargestellt.
Wann ist eigentlich Sommerzeit?
Die Umstellung erfolgt immer am letzten Sonntag in März und am letzten Sonntag im Oktober. Dafür gilt es in Abhängigkeit des aktuellen Jahres das jeweilige Datum zu berechnen.
Sommerzeitanfang:
Der März und der Oktober haben jeweils 31 Tage, somit ist der letzte Sonntag immer zwischen dem 25. und dem 31. Im Jahr 2000 war der Sommerzeitanfang am 26.03. Ein normales Kalenderjahr hat 365 Tage, das sind 52 Wochen und 1 Tag. Somit verschieben sich die Wochentage gegen das Datum um einen Tag pro Jahr. Der letzte Sonntag im März ist im Folgejahr 2001 nicht der 26. sondern der 25. Ein Schaltjahr hat 366 Tage, das sind 52 Wochen und 2 Tage. Im Schaltjahr verschieben sich die Wochentage um 2 Kalendertage. Basierend auf die Ausgangssituation von 2000 mit dem So., den 26.03., kann man für ein beliebiges späteres Jahr errechnen wieviele Jahr seit 2000 vergangen sind und für jedes Jahr einen Tag vom Datum abziehen. Darüber hinaus gilt es festzustellen wieviele Schaltjahr dabei sind und für jedes Schaltjahr muss dann einen weiterer Tag abgezogen werden.
Das gesuchte Datum würde sich so aber beliebig weit vor verschieben. Da wir uns nicht dafür interessieren wann unser Ausgangssonntag ist, sondern wann der letzte Sonntag vom März ist, dürfen wir nicht einfach die Summe der errechneten Tage abziehen. Zuerst müssen alle ganzen Wochen aus der Tagesanzahl raus gerechnet werden und dann nur der Rest der Tagesanzahl vom Datum abgezogen
werden. Falls das Datum dadurch kleiner als der 25. wird, dann müssen noch einmal 7 Tage hinzu gezählt werden. Dann ist es das Datum des letzten Sonntags im März.
Sommerzeitende:
Das Ende der Sommerzeit, also das Datum des letzten Sonntag im Oktober, ist recht leicht zu ermitteln, wenn das Datum des Sommerzeitanfangs schon bekannt ist. Es ist einfach 3 höher als das des Anfangs oder 4 kleiner, je nachdem was in den Intervall 25. bis 31. fällt. Die Sommerzeit ist, je nach Lage der Sonntage, entweder 210 oder 217 Tage, also 30 oder 31 Wochen lang. Es sind immer ganze Wochen, da sie von Sonntag bis Sonntag geht. Für das Datum ist aber relevant, dass die Monate nicht 28 Tage habe sondern 28 bis 31 Tage, also um 0 bis 3 Tage länger sind als 4 ganze Wochen. Beim Folgemonat ist das Datum der "gleichen" Wochentage also um 0 bis 3 Tage kleiner.
Für die Monate der Sommerzeit ergeben sich daraus insgesamt 18 Tage, die man abziehen müsste, da wir uns aber wieder für den Letzten Sonntag des Monats (Oktober) interessieren muss man den Sonntag nehmen, der nach Abzug der 18 Tage dann 3 oder 2 Wochen später liegt. Schaltjahre spielen hier keine Rolle, da der Schalttag immer in der Winterzeit liegt (29.02.).
Rechnerisch heißt das:
So. 26.(03.) - 18 Tage = So. 08.(10.)
So. 08.(10.) + 3 Wochen = So. 29.(10.)
In einem Schritt heißt das +3 Tage (-18 + 21 = +3) => So. 26.(03.) + 3 = So. 29.(10.).
Für den Fall das sich daraus ein Datum größer 31 ergibt, muss man einfach 7 Tage abziehen.
Wann ist ein Schaltjahr?
Dazu gibt es drei Regeln:
1. Alle Jahre die sich ohne Rest durch 4 teilen lassen sind ein Schaltjahr (2000, 2004, 2008 ...).
2. Alle Jahre die sich ohne Rest durch 100 teilen lassen sind ausnahmsweise kein Schaltjahr (2100, 2200, 2300 ...).
3. Alle Jahre die sich ohne Rest durch 400 teilen lassen sind dann doch wieder ein Schaltjahr (2000, 2400, 2800 ...)
Das Jahr 2000 war wegen 1. ein Schaltjahr, hätte wegen 2. keins sein sollen, war aber wegen 3. doch ein. Diese Ausnahme von der Ausnahme findet planmäßig alle 400 Jahre statt. Deswegen bietet er sich an vom Jahr 2000 an zu rechnen, genauso gut könnte man rechnerisch auch das Jahr 0 als Basis nehmen, das würde aber zu der Annahme verleiten, dass unser Kalender in den letzten 2000 Jahren schon nach diesen Regeln berechnet wurde, aber das ist falsch. Diese Regeln sind relativ neu, vor Allem im Bezug auf ihre praktische Anwendung, vorher wurde der Kalender mehrfach zu unregelmäßigen Zeiten um diverse Tage angepasst. Aber das nur nebenbei.
Wieviel Jahre und Schaltjahre sind z.B. im Jahr 2013 seit 2000 vergangen?
2013-2000=13; damit ergibt sich eine Verschiebung des Sonntags um 13 Kalendertage.
13/4=3,25; abgerundet sind das 3, somit liegen in diesen 13 Jahren 3 Schaltjahre für die jeweils ein weiterer Tag Verschiebung zu berechnen ist.
Verschiebung 13+3=16
Eine Verschiebung von jeweils 7 Tagen = 1 Woche ist rechnerisch zu missachten, da der Sonntag dann nicht mehr der letzte im Monat wäre. Also rechnen wir aus den Verschiebungstagen die ganzen Wochen raus.
16/7 = 2 Rest 2; die 2 Ganzen vergessen wir und behalten die 2 Rest.
Dann müssen wir vom 26. 2 Tage abziehen, das wäre der 24., da der 24. unterhalb des möglichen Intervalls 25.-31. liegt ist er zwar noch ein Sonntag, aber nicht mehr der letzte im März, der ist dann eine Woche später. Daraus folgt 24. + 7 Tage ist der Sonntag der 31.
Was passiert wann bei der Sommerzeit?
Die Sommerzeit ist die MEZ + 1 Stunde. Die Winterzeit ist MEZ. Praktisch heißt das, dass am Letzten Sonntag im März die Uhr um 2 Uhr (MEZ) auf 3 Uhr (MEZ+1) vorgestellt wird und am letzten Sonntag im Oktober um 3 Uhr (Sommerzeit=MEZ+1) auf 2 Uhr (MEZ) zurück gestellt wird.
Für das Jahr 2000 (26.03.-29.10.) heißt das:
Wenn laut MEZ "Jetzt" größer oder gleich "26.03.-2:00h" ist dann ist Sommerzeit.
Aber wenn laut MEZ "Jetzt" größer oder gleich "31.03.-2:00h" ist dann wieder Winterzeit.
Berechnung der Sommerzeitperiode für ein beliebiges Jahr genannt JAHR (bei
JAHR >= 2000)
Berechnung:
Anzahl_Jahre = JAHR-2000
Anzahl_Schaltjahre = abgerundet(Anzahl_Jahre/4) - abgerundet(Anzahl_Jahre/100) +
abgerundet(Anzahl_Jahre/400)
Verschiebung_brutto = Anzahl_Jahre + Anzahl_Schaltjahre
Verschiebung_netto = Verschiebung_brutto - (abgerundet(Verschiebung_brutto/7))*7
Anfangs_Tag = 26 - Verschiebung_netto
Wenn Anfangs_Tag < 25 dann Anfangs_Tag = Anfangs_Tag + 7
Ende_Tag = Anfangs_Tag + 3
Wenn Ende_Tag > 31 dann Ende_Tag = Ende_Tag - 7
Ergebnis:
Die Sommerzeit beginnt am Anfangs_Tag.März.JAHR
Die Sommerzeit endet am Ende_Tag.Oktober.JAHR
Prüfung auf Sommerzeit:
Man nehme das aktuelle Datum und die aktuelle Uhrzeit laut MEZ und zerlege es in einzelne Zahlen. Dann nehme man Anfang und Ende der Sommerzeit laut MEZ und zerlege es auch in einzelne Zahlen. Die jeweiligen Zahlen des Monats, des Tages und der Stunde sind relevant. Daraus basteln wir uns eine Vergleichszahl, indem wir sie zu einer sechsstellige Zahl zusammen fügen nach dem Muster: MMTThh. Wir betrachten als Beispiel wieder das Jahr 2000:
Sommerzeit Anfang 26.03. 02:00h => 032602
Winterzeit Anfang 29.10. 02:00h => 102902
Jetzt ist z.B. der 17.06. 14:12h => 061714
Vergleich: 061714 ist größer oder gleich 032602 und 061714 kleiner als 102902.
Daraus folgt, dass Jetzt in der Sommerzeit liegt.
Als Formel würde das so aussehen:
Anfang = 30000 + Anfangs_Tag * 1000 + 2
Ende = 100000 + Ende_Tag * 1000 + 2
Jetzt = (Monat von heute) * 10000 + (Tag von heute) * 1000 + (Stunde von Jetzt)
Sommer = falsch
Wenn Jetzt >= Anfang dann Sommer = wahr
Wenn Jetzt > Ende dann Sommer = falsch
Jetzt, Anfang und Ende muss zum Vergleich in MEZ betrachtet werden. Für den Fall, dass Sommerzeit ist, muss zu Jetzt eine Stunde hinzugefügt werden. Dabei kann sich ab 23:00 Uhr natürlich auch der Tag ändern und damit auch möglicherweise der Monat.
Gruß Frank