2. Tipps und Tricks Teil 2 ab 2.2.18 (zurück zu Teil 2 Anfang , Teil 2 Uhr, zu Teil_1 , zu Startseite )
Datum berechnen (Stand: 26..6.2016)
siehe
auch Informationen, Ergänzung und
Erläuterung für Datum berechnen und Datum
berechnen für Steuerungen
Tag-Nummer im Jahr berechnen, Schaltjahr, Monatslänge,
Datumsdifferenz
Datum_aus_Tagnummer des Jahres bilden,
Wochen-Nummer
im Jahr errechnen, richtige Wochennummer am Anfang und Ende des Jahres
Wochennummer mit Formel berechnen einfache Formeln mit Jahr und Osterkennzahl
Datum einer Kalenderwoche Datum vom Wochenanfang Montag bestimmen
Wochentag eines Datums berechnen im Julianischen und Gregorianischen Kalender, Wochentag am
Monatsende
Einfache_Berechnung_des_Wochentages Neu
Umrechnen vom Julianischen zum Gregorianischen Datum
Osterdatum_berechnen einfache
Osterformel, Osterkennzahl E, Osteralgorithmus für alle Jahrhunderte
Zusammenfassung: Formeln
zu Datum und Feiertagen mit Osterkennzahl und Osterkennziffer
Download Formelsammlung Formeln zu Feiertagen.pdf
Julianischer und frühester und spätester Ostertermin errechnen siehe Ergänzung und Erläuterung
Bewegliche Feiertage und Wochentage mit Osterkennzahl oder
Ostersonntag berechnen
Bewegliche_Feiertage berechnen
Rosenmontag, Karfreitag, Himmelfahrt (Vatertag), Pfingsten, Fronleichnam
Auch_mit_Osterdatum_berechnen Buß- und Bettag , Totensonntag, Muttertag ,
Sommerzeit , Datum Advent,
Wochentag_mit_Osterkennzahl berechnen
für Weihnachten und Silvester,
Wochentag Nikolaus
Feiertage
mit Jahreszahl berechnen Jahreskennziffer (statt mit Osterkennzahl)
Berechnung Buß-
und Bettag, Muttertag, Advent, Datum Sommerzeit Winterzeit, Totensonntag,
Volkstrauertag
Schweizer_Feiertage
mit Jahreszahl oder Osterkennzahl berechnen
Datum für weitere_Feiertage
und besondere Tage berechnen
Weiter zu Datum berechnen für Steuerungen Fortsetzung für Steuerungsgeräte z.B. c-control
Wochentag, Jahrestag, Wochennummer (Kalenderwoche)
Osterdatum berechnen für Steuerungsgeräte mit Basic
Bewegliche Feiertage Rosenmontag, Karfreitag, Himmelfahrt, Pfingsten, Fronleichnam,
Muttertag, Advent, Datum Sommerzeit, Buß- und Bettag mit Osterdatum berechnen
Steuern mit Feiertagsbit für Heizung, Rollladen und Kirchenglocken
Programme für feste und bewegliche Feiertage
Weiter zu Tipps und Tricks Teil 3
Zeittakte mit Uhrzeit und TIMER, Wartezeit,
(Schaltuhr siehe Softwarebausteine)
Weiter zu Tipps und Tricks Teil 4
Überschreitung von 32767 beim Rechnen, Begrenzen
Zählen bis 65535 im word, Zahl 0 bis 65535, Anzeigen mit 1 bis 2 Kommastellen
Zahlen
über 65535 Zähler, Addition, Multiplikation,
Division
Gott hat die Zeit geschaffen, der Teufel den Kalender.
(Erwin Chagraff)
2.2.18) Tag-Nummer
im Jahr berechnen, Jahrestag (mehr
dazu Information Ergänzung und Erläuterung)
Achtung, hier müssen
Ganzzahl-Division (Kommastellen fallen weg) und Divisions-Rest (MOD) angewendet
werden.
Beispiel: Ganzzahl = 11 / 7 = 1 Rest
= 11 MOD 7 = 4
(1) Schaltjahr erkennen
SJ = 1 / (1+Jahr MOD 4) –1 / (1+Jahr MOD 100) +1 / (1+Jahr MOD 400) ' Schaltjahrkennung, im Schaltjahr = 1, sonst = 0
Anmerkung: 1 / (1+Jahr MOD 4) ist = 1, wenn Jahr MOD 4 = 0 (also Schaltjahr) ist. . Gültig für 1901 bis 2099
Je nach Bedarf kann die Jahrhundertregel –1 / (1+Jahr MOD 100) +1 / (1+Jahr MOD 400) weggelassen werden. Sie ist erst wieder für das Jahr 2100 bzw. 2400 notwendig.
Zweite Möglichkeit Schaltjahr bestimmen (z.B. für Tabellenkalkulation)
SJ = (Jahr +3) MOD 4 / 3 – (Jahr +99) MOD 100 / 99 + (Jahr +399) MOD 400 / 399 ' Schaltjahrkennung, im Schaltjahr = 1, sonst = 0
(2) Tagnummer mit Formel berechnen (alle Jahrhunderte) aus Tag, Monat und Jahr
TagNr = Tag + 31 * Monat – 31 ' Tagnummer im Jahr für Januar und Februar
TagNr = Tag + (153 * Monat – 162) / 5 + SJ ' Tagnummer im Jahr für März bis Dezember
TagNr = Tag +
489 * Monat / 16 – 32 + SJ ' alternativ für März bis Dezember
Zwischen den beiden Formeln kann man umschalten mit
if Monat < 3 then TagNr = Tag + 31 * Monat –31 else TagNr = Tag + (153 * Monat –162) / 5 + SJ
(3) Tagnummer mit Formel berechnen (alle Jahrhunderte) aus Tag, Monat und Jahr
TagNr = Tag + 30 *Monat – 30 + Monat *9 / 16 – (7+Monat) / 10 *(2 – SJ) Schaltjahrkennung SJ siehe oben.
Kürzere Formel für alle Monate zur
Berechnung der Tagnummer
TagNr = Tag + 489 * Monat / 16 – (7 + Monat) / 10 *(2 – SJ) – 30
(4) Abstand
von Datum zu Datum
(Datumsdifferenz)
Beispiel: Wie
viele Tage sind es noch bis Weihnachten?
Für jedes Datum wird die Tagnummer (Jahrestag) ausgerechnet und die Differenz gebildet.
Bei Überschreitung des Jahres müssen natürlich 365 bzw. 366 Tage addiert werden.
Wie viele
Tage liegen zwischen Weihnachten Heiligabend und Ostern im nächsten Jahr?
Jahres-TagNr (von Ostersonntag) = E – 33 + SJ (Berechnung der Osterkennzahl E siehe unten)
Zu der
Jahres-TagNr werden die Tage im Dezember = 31 –24 = 7 addiert.
Beispiel 24.12.2011 und Osterkennzahl (E= 131 für 2012), 2012 ist Schaltjahr
Anzahl = 131 –33 + 1 +7 = 106 Tage
(5)
Monatslänge bestimmen = Letzter Tag (Datum) im Monat
Monatslänge = 30 + (Monat * 9 /
8) MOD 2 – 2 / Monat * (Monat –1) *(2 – SJ)
Beispiel Januar = 30 + (1*9 / 8) MOD 2 – 2 * 0 = 31, Beispiel April = 30 + (4*9 / 8) MOD 2 – 0 = 30 + 4 MOD 2 = 30
(6) Anzahl
der Tage der vorher gehenden Monate und Jahrestag am Monatsende
In eine der obigen Formeln für Tag-Nummer wird Tag =0 eingesetzt und man erhält für die vorher gehenden Monate
Anzahl Tage = (153 * Monat –162) / 5 + SJ (gültig für Monate März bis Dezember)
z.B. für März (153 * 3 –162 ) / 5 +SJ = 59 + SJ = Anzahl der Tage vor dem 1. März (Kontrolle 31 +28 +SJ).
Dagegen wird der Jahrestag am jeweiligen Monatsende z.B. Februar mit folgender Formel bestimmt.
Monatsende
TagNr = (153*Monat – 9) / 5 + SJ + 1 / Monat * (3 – SJ)
Beispiel Februar = (153*2 – 9) / 5 + SJ + 0 = 59 bzw. 60 , Kontrolle (Januar + Februar = 31+28 +SJ)
2.2.19) Datum
aus Tag-Nummer des Jahres berechnen (alle Jahrhunderte)
Oben wurde das Datum bestehend aus Tag und Monat in Tagnummer im Jahr umgewandelt.
Aufwändiger ist es, Tagnummer des Jahres in ein Datum bestehend aus Tag und Monat umzuformen.
Januar, Februar und Schaltjahr (4-stellig) werden in meinen Formeln zum Umwandeln des Jahrestages in ein Datum berücksichtigt.
SJ = 1 / (1+Jahr MOD 4) – 1 / (1+Jahr MOD 100) + 1 / (1+Jahr MOD 400) ' Schaltjahrkennung, im Schaltjahr = 1, sonst = 0
Tk = TagNr + 30 + (TagNr + SJ + 400) / 460
*(2 – SJ) ' Tag-Korrekturwert
wegen Januar, Februar und Schaltjahr
Monat = Tk * 16 / 489
Tag = TagNr + 30 – 489 * Monat / 16 + (7 + Monat) /
10 *(2 – SJ)
2.2.20) Wochen-Nummer
berechnen
Die Berechnung erfolgt mit der Tag-Nummer des Jahres, dessen Berechnung aus dem Datum siehe oben.
Das folgende Programm und die Formeln geben die Kalenderwoche von Montag bis Sonntag aus.
Die deutsche, europäische und ISO
Norm wird eingehalten. Achtung, Woche 1 ist die
Woche, in welcher der 4. Januar liegt.
Hiervon
weicht die amerikanische Norm ab und man erhält andere Wochennummern.
Am Anfang und Ende des Jahres werden die richtigen Wochennummern bestimmt.
Zum Beispiel liegt der 31.12.2013 in Woche 1 des Jahres 2014.
2015 hat 53 Wochen und die ersten Tage 2016 gehören zu Woche 53 des Jahres 2015.
1) Wochen-Nummer
mit Programmzeilen bestimmen (siehe Ergänzung und
Erläuterung)
2) Wochen-Nummer
mit Formeln berechnen, Kalenderwoche
SJ = 1 / (1+Jahr MOD 4) –1 / (1+Jahr MOD 100) +1 / (1+Jahr MOD 400) ' Schaltjahrkennung, im Schaltjahr = 1, sonst = 0
Alternative Formel einschließlich Schaltjahr vor dem aktuellen Jahr
DJ = 2 / (1+Jahr MOD 4) – 2 / (1+Jahr MOD 100) +2 / (1+Jahr MOD 400) ' im Schaltjahr = 2, Schaltjahr +1 = 1, sonst = 0
SJ = DJ / 2 ' Schaltjahrkennung, im Schaltjahr = 1, sonst = 0
SVJ = DJ – 2 *SJ ' Schaltjahrkennung für Vorjahr = 1, sonst = 0
JT = Tag + 489 * Monat / 16 – (7 + Monat) / 10 *(2 – SJ) – 30 ' Tag-Nr des Jahres
(1)
Wochennummer für alle Jahrhunderte mit Osterkennzahl
E (Osterberechnung E siehe unten)
JT = Tag-Nr des Jahres und
Schaltjahr SJ SVJ (wie vor)
A = (6 * E +1 - SJ) MOD 7 ' Wochentag 3.1.
G = (JT + A +3 )
/ 7 ' Grundwert Wochennummer
(richtig bei 1 bis 52)
' Prüfen bei Woche =53 (Ende des Jahres)
EJ = (A + SJ) / 6 ' =1 bei Jahr mit 53 Wochen, wenn 3.1. Sa oder Fr +SJ = 6 oder 7
KE = G / 53 * (1 – EJ) *52 ' bei Woche 53 (= 0 bzw. 52 zur Erzeugung Woche 1
' Prüfen bei Woche = 0 (Anfang des Jahres)
AV = (6*E - SJ - SVJ) MOD 7 ' Wochentag 3.1. Vorjahr
ZV = (AV + SVJ) / 6 ' = 1 , bei Vorjahr 53 Wochen, wenn 3.1.Vorjahr Sa oder Fr +VSJ = 6 oder 7
KA = 1/(1+G)*(52+ ZV) ' bei WoNr =0 , dafür 52 bzw. 53
WoNr = G + KA - KE ' Woche , Jahr ergänzen
(2)
Jahr 4-stellig
für 1901 bis 2099 Lösung mit Datum Tag Monat Jahr oder Jahrestag
SJ = 1 / (1+Jahr MOD 4) –1 / (1+Jahr MOD 100) +1 / (1+Jahr MOD 400) ' Schaltjahrkennung, im Schaltjahr = 1, sonst = 0
JT = Tag + 30 *(Monat –1) + Monat *9 / 16 – (7+Monat) / 10 *(2 – SJ) ' Tag-Nr des Jahres
G = ((5 * Jahr +3) / 4 MOD 7 + JT +3) / 7 ' Grundwert Wochennummer
A = 1 /
(G +1) ' =1 für Berechnung mit Vorjahr bei G =0
KA = A *
362 '
Korrektur Jahresanfang bei G = 0; Woche 53 oder 52
KE = G / 53 * ((5 * Jahr +8) / 4 MOD 7 + 4) / 7 *52 '
Korrektur Jahresende bei G = 53; für Woche 1 statt 53
WoNr =
((5 * (Jahr – A) +3) / 4 MOD 7 +
JT +3 + KA) / 7 – KE ' Wochen-Nummer
(3) Wochennummer für alle Jahrhunderte Lösung mit Datum Tag Monat Jahr bzw. Jahrestag
JT = Tag-Nr
des Jahres und Schaltjahr SJ SVJ (siehe 1)
Jx = (Jahr + Jahr / 4 - Jahr / 100 + Jahr / 400) MOD 7 ' Wochentag 31.12. (Jahr)
A = (2 +Jx - SJ) MOD 7 ' Wochentag 3.1. Jx Jahreskennziffer
G = (JT + A +3 ) / 7 ' Grundwert Wochennummer
(richtig bei 1 bis 52)
'Prüfen bei Woche =53 (Ende des Jahres)
EJ = (A + SJ) / 6 ' =1 bei Jahr mit 53 Wochen bei 6 oder 5 + SJ
KE = G / 53 * (1 – EJ) *52 ' bei Woche 53 (= 0 bzw. 52 zur Erzeugung Woche 1
'Prüfen bei Woche = 0 (Anfang des Jahres)
AV = (1 + Jx - SJ - SVJ) MOD 7 ' Wochentag 3.1. Vorjahr
ZV = (AV + SVJ) / 6 ' = 1 , 53 Wochen bei 3.1.Vorjahr ist Sa oder Fr +VSJ = 6 oder 7
KA = 1/(1+G)*(52+ ZV) ' bei WoNr =0 , dafür 52 bzw. 53
WoNr = G + KA – KE ' Woche , Jahr ergänzen
(weiteres siehe Ergänzung und
Erläuterung)
2.2.21) Tag-Nr.
und Datum aus einer Kalenderwoche berechnen
Tag-Nr. bzw. Datum vom Wochenanfang (Montag) einer Kalenderwoche
TagNr = WoNr
*7 – 3 – (( 5 * year +7) / 4) MOD 7 ' year
2-stellig für 2000 bis 2099
TagNr = WoNr *7 – 3 – (( 5 * Jahr
+3) / 4) MOD 7 ' Jahr 4-stellig für 2000 bis
2099
Ergebnis ist die Tag-Nummer im Jahr. Dieser Montag muss in das Datum Tag und Monat umgeformt werden (Formel siehe oben).
Das Ergebnis ist zunächst die Tag-Nummer im Jahr und muss in Tag und Monat umgeformt werden.
Woche 1
ist die Woche, in der der 4. Januar liegt. Der 1. bis 3. Januar kann in Woche
52 oder 53 des Vorjahres liegen.
Entsprechend
können Dezembertage in Woche 1 des Folgejahres liegen.
Bei Wochennummer 52 bzw. 53 am Anfang des Jahres muss das Vorjahr eingesetzt werden.
Bei Wochenummer 1 am Ende des Jahres muss das Folgejahr eingesetzt werden.
Für andere Wochentage und weiteres
siehe Ergänzung
und Erläuterung)
2.2.22) Wochentag
eines Datums berechnen (DOW)
Hier wird mit Hilfe des Jahres einschließlich Schaltjahre die Tag-Nummer in der Woche (Day of week) bestimmt.
1) Wochentag mit der Tag-Nummer des Jahres berechnen (Tagnummer berechnen siehe oben)
(1) Allgemein für alle Jahrhunderte (ab 1582, Gregorianischer Kalender)
SJ = 1 / (1+Jahr MOD 4) – 1 / (1+Jahr MOD 100) + 1 / (1+Jahr MOD 400) ' Schaltjahr (SJ) = 1 , sonst = 0
Jx = (Jahr + Jahr / 4 – Jahr / 100 + Jahr / 400) MOD 7 ' Wochentag 31.12. Jahr (4-stellig)
WoTag = ( Jx + TagNr – 1 – SJ ) MOD 7 ' Tag 0 bis 6 (So, Mo, Di, Mi, Do, Fr, Sa)
TagKW = ( Jx + TagNr – 2 – SJ ) MOD 7 + 1 ' Tag 1 bis 7 ( Mo, Di, Mi, Do, Fr, Sa, So)
Bei Jahren mit gleichem Jx
stimmen Wochentag und Datum überein (Schaltjahr berücksichtigen).
(2) Tag (0 bis 6) der Woche (Jahr 2000 bis 2099)
DOW = (year + (year +23) / 4 + TagNr ) MOD 7 ' Tag 0 bis 6 (year 2-stellig)
oder mathematisch umgeformt: DOW = ((5*year +23) / 4 + TagNr ) MOD 7
(3) Tag (0 bis 6) der Woche (Jahr 1901 bis 2099)
DOW = (Jahr + (Jahr +19) / 4 + TagNr ) MOD 7 ' Tag 0 bis 6 (Jahr 4-stellig)
2) Wochentag mit dem Datum (Tag, Monat, Jahr) berechnen
(1) Wochentag
berechnen mit Osterkennzahl E Allgemein für alle Jahrhunderte
als Tag 0 bis 6 für So, Mo, Di, Mi, Do,
Fr, Sa
Falls Ostern und die beweglichen Feiertage ohnehin berechnet werden, ist einfach auch der Wochentag eines beliebigen Datums mit meiner Formel zu berechnen.
SJ = 1 / (1+Jahr MOD 4) –1 / (1+Jahr MOD 100) +1 / (1+Jahr MOD 400) ' Schaltjahrkennung, im Schaltjahr = 1, sonst = 0
m = (13 * Monat +3) / 5 + (12 – Monat) / 10 * (Monat +1 – SJ) ' Monatswert mit Korrektur Jan. Feb.
WoTag = (Tag + m + 6 * E ) MOD 7 ' Wochentag für beliebiges Datum
Bei meiner Lösung ist vorteilhaft, dass das Schaltjahr bereits in der Osterkennzahl E ab März enthalten ist.
E oder Ed und m können aus den folgenden Tabellen eingesetzt werden und Vielfache von 7 abgezogen werden (z.B. 15 MOD 7 = 1 MOD 7).
Beispiel: Wochentag 25.12.2013 = (25 + 3 + 6 * 4) MOD 7 = 52 MOD 7 = 3 (Dienstag)
Weil (25+3) MOD 7 = 0 gilt WoTag = 6 * E MOD 7 oder = 6 * Ed MOD 7 für jedes Jahr 25.12.
Wochentag 25.12.2013 = 6 * 4 MOD 7 = 24 MOD 7 = 3
Tabellenwert m
je Monat in Klammern, die
Werte sind mit MOD 7 reduziert und können statt der obigen Berechnung genutzt
werden:
Jan (5 bzw.
4), Feb (1 bzw. 0), März (1), Apr (4), Mai (6),
Juni (2), Juli (4), Aug (0), Sept (3), Okt (5),
Nov (1), Dez (3)
bei Januar / Februar gilt der
zweite Wert für Schaltjahre ( wegen minus SJ)
Für E kann
auch
Osterkennziffer Ed = E MOD 7
(Rest nach Division durch 7) eingesetzt werden. Sie beträgt für
2008 (3), 2009 (2), 2010 (1),
2011 (0), 2012 (5), 2013 (4), 2014 (3), 2015 (2),
2016 (0), 2017 (6), ...
Die Osterkennziffer Ed folgt einem
Gesetz –1 von Jahr zu Jahr und
im Schaltjahr –2 . Wird die Zahl negativ, muss 7 addiert werden z.B.
2011 zu Schaltjahr 2012 (0 –2 +7 = 5).
Siehe auch bei Ostern (weiter unten)
(2) Wochentag vom Monatsende mit
Osterkennzahl berechnen
ML = (13 *
Monat + 16) / 5 + 1 / Monat *
(3 – SJ) '
Monatswert mit Korrektur Januar
LetzterWoTag = (ML + 6 * E) MOD 7 ' Letzter Wochentag für beliebigen Monat (gregorianisch)
Letzter Sonntag im Monat usw. siehe weiter unten.
(3) Wochentag
mit Jahr berechnen Allgemein
für alle Jahrhunderte
als Tag 0 bis 6 (So, Mo, Di, Mi, Do,
Fr, Sa)
Das Schaltjahr ist ein Problem, weil es im Januar und Februar nicht wirksam ist, sondern erst ab März. Hierfür wird eine Unterscheidung gebraucht.
Üblich wird für die Monatsanfänge eine Tabelle benutzt. Einfacher sind meine Formeln:
Tabellenwert
je Monat MK in Klammern:
Jan (0), Feb (3),
März (2), Apr (5), Mai (0), Juni (3), Juli (5),
Aug (1), Sept (4), Okt (6), Nov (2), Dez (4)
Erläuterung: Die Ziffer Februar ist die Differenz der
Wochentage zu Januar. (Beispiel 1.1. Sonntag, dann ist der 1.2. Mittwoch).
Ab März stellen die Ziffern die Differenz der Wochentage zum Jahresanfang minus 1 dar (Beispiel 1.6. Donnerstag, 4 –1 = 3).
RJ = Jahr – (14 – Monat) / 12 ' Rechenjahr ist Vorjahr bei Jan Feb, sonst Jahr
MK = (1 + (Monat + 9) MOD 12) * 31 / 12 ' Monats-Konstante errechnen (Tabelle ist MK MOD 7)
Gregorianischer Kalender: Die folgende Formel gilt für das Datum ab 15.10.1582, wenn der neue Kalender in dem Land gültig war.
WoTag = (Tag + MK + RJ + RJ / 4 – RJ / 100 + RJ / 400 ) MOD 7 ' Wochentag bei Datum Gregorianisch
Julianischer Kalender: Die folgende Formel gilt immer für Datum vor 15.10.1582 und weiterhin für Datum nach Julianischem Kalender.
WoTag = (Tag + MK + RJ + RJ / 4 – 2 ) MOD 7 ' Wochentag bei Datum Julianisch
Bei der Umstellung vom Julianischen auf Gregorianischen Kalender folgte auf Donnerstag, 4.10.1582 der Freitag, 15.10.1582.
Die
Wochentagsfolge blieb damals erhalten. Fälschlicherweise wird oft behauptet,
dass Tage mit Datum 5.10. bis 14.10.1582 nicht existieren. Tatsächlich gehören
diese Tage zum Julianischen Kalender.
Galileo wurde am 18.2.1564 (Julianisch) geboren und starb am 8.1.1642 (gregorianisch). Nach Julianischem Kalender starb er im Jahre 1641, weil damals die Differenz zwischen den Kalendern 10 Tage betrug.
Beispiel 1: Galileo musste am 22.6.1633 (Datum nach 1582, also Gregorianischer Kalender) der Tatsache abschwören, dass sich die Erde um die Sonne dreht.
MK = (1 +( 6 +9) MOD 12) *31/ 12 = (1+3) * 31 / 12 = 10 (Ganzzahl)
WoTag = (22 + 10 + 1633 + 1633/4 –1633/100 + 1633/400 ) MOD 7
= (22+17+1633+ 408 – 16 + 4) MOD 7 = 2062 MOD 7 = 3 ' Es war Mittwoch 22.6.1633.
An diesem Tag rettete er sich mit der Notlüge vor Folter und Tod. „Und sie dreht sich doch“ wird er gedacht haben. 360 Jahre später 1992 wurde er rehabilitiert und hat endgültig gesiegt.
Beispiel 2: Reformator Dr. Martin Luther, Anschlag der 95 Thesen an die Tür der Schlosskirche in Wittenberg am 31.10.1517 (Datum vor 1582, also Julianischer Kalender).
MK = (1 +( 10 +9) MOD 12) *31/ 12 = (1+7) * 31 / 12 = 20 (Ganzzahl)
WoTag = ( 31 + 20 +1517 +1517 / 4 – 2 ) MOD 7 = 1945 MOD 7 = 6 ' Es war Samstag 31.10.1517
Wie andere Festtage z.B. 24.12. sind Allerheiligen und Reformationstag an das Datum gekoppelt unabhängig vom Julianischen oder Gregorianischen Kalender.
(4)
Umrechnen vom Julianischen zum
Gregorianischen Datum (und umgekehrt)
Für Datum vor 15.10.1582 gilt immer der Julianische Kalender, aber auch für spätere Daten, soweit in Ländern der Gregorianische Kalender später gültig wurde.
Die Schaltjahrregel wurde damals geändert, wodurch das Datum der beiden Kalender vom 1.3. 200 bis 28.2. 300 identisch blieb, jedoch davor und danach über die Jahrhunderte immer mehr von einander abweicht.
Rechenjahr RJ (siehe oben) ist für Datum im Januar / Februar das Vorjahr (= Jahr –1). Erreicht das errechnete Datum März, dann wird mit dem aktuellen Jahr gerechnet.
Dies wirkt sich nur am Anfang eines Jahrhunderts aus (z.B. RJ = 1899 für Datum bis 28.2.1900). Der Term 3 / (Monat +1) ist nur Januar und Februar = 1.
RJ = Jahr – 3 / (Monat +1) ' Rechenjahr ist Vorjahr bei Jan Feb, sonst Jahr, weil das Schaltjahr erst ab 1. März wirkt.
Tagesdifferenz = RJ / 100 – RJ / 400 – 2
Die Tagesdifferenz muss zum Julianischen Datum addiert werden, um das Gregorianische Datum zu erhalten.
Einfache Formeln erhält man durch mathematisches Umformen.
Auch hier muss Anfang des Jahrhunderts beachtet werden (z.B. RJ = 1899 für Datum bis 28.2.1900).
Für die Jahrhundertzahl gilt HZ = RJ / 100 (z.B. für 1983 ist HZ =19):
Tagesdifferenz
= (3 * HZ +3) / 4 – 2
Für das Jahrhundert gilt JH = 1 + RJ / 100 (z.B. 1983 liegt im 20. Jahrhundert, JH = 20)
Tagesdifferenz = 3 * JH / 4 – 2
Beispiel: In Russland galt der Julianische Kalender bis 1918. Die vom deutschen Kaiser finanzierte Oktoberrevolution in Russland begann am 25.10.1917 (Mittwoch).
Tagesdifferenz = 1917 / 100 – 1917 / 400 – 2 = 19 – 4 – 2 = 13 Tage
oder mit Jahrhundertzahl 1917 / 100 = 19 ergibt Tagesdifferenz = (3*19 +3) / 4 –2 = 13
oder mit 20. Jahrhundert 1917 / 100 + 1 = 20 ergibt Tagesdifferenz = 3*20 / 4 –2 = 13
Tag = 25 + 13 = 38. Wegen der Monatsüberschreitung werden 31 Tage für Oktober abgezogen 38 – 31 = 7 und der Monat erhöht.
In Deutschland datiert dieses Ereignis auf den 7.11.1917 des gregorianischen Kalenders (Mittwoch). Geändert hat sich nur das Datum; der Wochetag bleibt bestehen.
Geschichtsdaten wie der 30-jährige Krieg 1618 bis 1648 werden nach dem heute gültigen gregorianischen Kalender datiert, obwohl viele der Krieg führenden Länder den Julianischen Kalender benutzten.
(5) Einfache Berechnung des Wochentages für 1901 bis 2099 , gregorianisch.
Wenn der Monat bereits fest liegt, wird die erforderliche Konstante KM einfach aus einer Tabelle geholt und in die folgende Formel eingesetzt.
So kann jeder leicht den Wochentag seines Geburtstages berechnen.
Konstante
je Monat KM in Klammern:
Jan (23), Feb (7),
März (8), Apr (20), Mai (0), Juni (12), Juli (20),
Aug (4), Sept (16), Okt (24), Nov (8), Dez (16)
Erläuterung: Ab März sind die Zahlen KM das 4-fache der
Ziffern von MK (siehe (3)), weil sie in den folgenden Formeln durch 4 geteilt
werden.
Die Zahl
Februar ist auch das 4-fache also 4*3, jedoch wird Februar mit dem Vorjahr
(Jahr –1) berechnet und dadurch in den Formeln bei 5*Jahr mit –5 korrigiert (12
–5 = 7)
Bei Januar
entfällt 4-fach wegen Null und die Zahl ist –5. Eine positive Zahl wird
erreicht durch Erweiterung mit 28, weil 28/4 MOD 7 = 0 ist (28 –5 = 23).
Der Vorteil meiner Methode besteht darin, dass Schaltjahre bereits in der Formel berücksichtigt sind. Dadurch müssen Januar / Februar nicht gesondert behandelt werden.
Je nach Anwendungsfall kann eine der folgenden Formeln gewählt werden.
WoTag = ((year + KM) / 4 + year + Tag ) MOD 7 ' Tag 0 bis 6 (year 2-stellig für Jahr 2000 bis 2099)
WoTag = ((5 * year + KM) / 4 + Tag ) MOD 7 ' Tag 0 bis 6 (year 2-stellig für Jahr 2000 bis 2099)
WoTag = ((5 * year + KM) / 4 + Tag +1 ) MOD 7 ' Tag 0 bis 6 (year 2-stellig für Jahr 1901 bis 1999)
WoTag = ((5 * Jahr + KM) / 4 + Tag –1 ) MOD 7 ' Tag 0 bis 6 (Jahr 4-stellig 1901 bis 2099)
(6) Beispiel: Wochentag 1.1.2000
WoTag = ((5 * year + KM) / 4 + Tag ) MOD 7 ' year ist Null bei year 2-stellig für Jahr 2000
WoTag = (23 / 4 +1) MOD 7 = 6 (Samstag)
(7) Beispiel: Wochentag 1.1.1999
WoTag = ((5 * Jahr + KM) / 4 + Tag –1 ) MOD 7 ' (Tag –1) entfällt bei 1.1. Jahr 4-stellig 1901 bis 2099
WoTag = (5*1999 +23) / 4 MOD 7 = 5 (Freitag)
(8) Beispiel: Nikolaus 6.12. (KM = 16, Tag = 6)
WoTag = ((5*year + KM) / 4 + Tag) MOD 7 ' Tag 0 bis 6 (year 2-stellig Jahr 2000 bis 2099)
WoTag = (5*year / 4 + 4 + 6) MOD 7 ' (..+10) MOD 7 wird gekürzt zu (..+3) MOD 7
WoTag = (5*year / 4 + 3) MOD 7 ' Vereinfachte Formel für Wochentag Nikolaus (year 2-stellig Jahr 2000 bis 2099)
(9) Beispiel: Tag der Arbeit 1. Mai (KM = 0, Tag entfällt, wegen Tag –1 bei Jahr vierstellig für 1901 bis 2099)
WoTag = (5 * Jahr / 4 ) MOD 7 ' Tag 0 bis 6 (Jahr 4-stellig 1901 bis 2099)
(10) Beispiel: Valentinstag 14. Februar (KM = 7, Tag entfällt, weil 14 MOD 7 = 0)
WoTag = ((5*year + KM) / 4) MOD 7 ' Tag 0 bis 6 (year 2-stellig Jahr 2000 bis 2099)
WoTag = ((5*14+7 ) / 4) MOD 7 = 5 = Freitag 14. Februar 2014
(11) Beispiel: Tag der Deutschen Einheit 3.10. (KM = 24, Tag = 3)
WoTag = ((5*year + KM) / 4 + Tag) MOD 7 ' Tag 0 bis 6 (year 2-stellig Jahr 2000 bis 2099)
WoTag = ((5*10+24) / 4 + 3) MOD 7 = 0 = Sonntag 3. Oktober 2010
Trick: 3. Oktober hat immer den gleichen Wochentag wie der 2. Mai.
Wochentag Oktober ist gleich Mai mit (Tag –1) und Mai hat vorteilhaft KM = 0.
WoTag = (5*year / 4 + Tag –1 ) MOD 7 ' Gültig für Oktober (year 2-stellig Jahr 2000 bis 2099)
WoTag = (5*10 / 4 + 3 –1) MOD 7 = 0 = Sonntag 3. Oktober 2010
(12) Beispiel: Weihnachten 24.12.09 (Tag = 24 und KM = 16 für Dezember)
WoTag = ((5 * year + KM) / 4 + Tag ) MOD 7 = ((45+16) /4 +24) MOD 7 = (15+24) MOD 7 = Rest 4 ' =Donnerstag
1. Trick: Der 25.12. liegt immer auf demselben Wochentag wie der 1. Mai und Mai hat vorteilhaft KM = 0.
WoTag = (5 * year / 4 + Tag ) MOD 7 = (45/4 +1) MOD 7 = (11+1) MOD 7 = Rest 5 ' =Freitag (also liegt der 24.12. auf einen Donnerstag).
2. Trick: Weil der 25.12. denselben Wochentag wie der 1. Mai hat, liegt der 24.12. auf demselben Wochentag wie der 0. Mai (rechnerisch).
WoTag = (5 * year / 4 + Tag ) MOD 7 = (45/4 +0) MOD 7 = 11 MOD 7 = Rest 4 ' = Donnerstag 24.12.09
Mit diesen zwei Tricks entfallen Monat und Tag in der folgenden Formel für Heiligabend und Silvester.
Auf welchen
Wochentag fällt der 24. Dezember (Heiligabend)?
WoTag = 5 * year / 4 MOD 7 ' Heiligabend 24.12. oder Silvester (year 2-stellig 00 bis 99 für 2000 bis 2099)
Beispiel für 2013: 5*13 65/4 MOD 7 = 16 MOD 7 = Rest 2 ' = Dienstag 24.12.2013
(13) Niederländischer Königinnentag liegt auf dem 30.4. Falls Sonntag, dann Samstag z.B. 29.4.2017
3. Trick: Der 30.4. liegt auf demselben Wochentag wie der 0. Mai (rechnerisch), Tag und Monat entfallen.
WoTag = 5 * year / 4 MOD 7 ' weekdag Koninginnedag, zusätzlich falls =0, dann =6, Samstag 29.4.
(14) Wochentag vom Monatsende berechnen
Setzt man Tag = 0 und KM des folgenden Monats z.B. für Februar den März (KM = 8) in die Formel ein, dann erhält man den Wochentag vom Monatsende unabhängig von der Monatslänge, auch im Februar eines Schaltjahres.
Letzter WoTag des Monats = (5 * year + KM) / 4 MOD 7 ' mit KM des Folgemonats
Beispiel Februar 2013, (März KM =8): (5*13 + 8) / 4 MOD 7 = 4 ' Februar 2013 endet mit einem Donnerstag
3) Wochentag von Feiertagen mit der Osterkennzahl berechnen
Weihnachten, Silvester und niederl. Königinnentag hängen direkt nicht an Ostern. Warum kann man die Wochentage trotzdem auf diese Weise errechnen?
Mit der Osterkennzahl eines Jahres ist Wochentag Sonntag und Datum gekoppelt und damit liegen die Wochentage für alle Jahrestage fest.
Deshalb kann man mit meiner Osterkennzahl eines Jahres den Wochentag eines beliebigen Datums und auch der Feiertage z.B. Heiligabend bestimmen.
Auch umgekehrt kann mit der Osterkennzahl und einem Wochentag (z.B. Sonntag) das Datum (z.B. Advent) berechnet werden. Weiteres siehe unten.
Dabei ist das Jahr beliebig, weil es schon
in der Osterkennzahl berücksichtigt wurde. Ebenso sind Schaltjahre bereits
enthalten.
Deshalb
sind diese Formeln sehr einfach, z.B. WoTag = 6 – E MOD 7 ' Wochentag Heiligabend 24.12.
Berechnung des Wochentages eines Datums mit der Osterkennzahl
siehe bei Ostern (weiter unten).
2.2.23) Osterdatum und bewegliche Feiertage berechnen
Ostern ist ein beweglicher Feiertag. Tag und Monat also das Datum im Jahr wird hier mit Formeln errechnet.
Ausgehend von verschiedenen Lösungen (unbekannter Autor 1876, Butcher , Carter, Oudin, Gauss, Dr. Lichtenberg) habe ich einen einfachen Rechengang (siehe (3) Einfache Berechnung für Ostersonntag) für die Jahre 1900 bis 2199 (gregorianischer Kalender) gebildet, sowie auch einen einfachen Algorithmus für alle Jahrhunderte.
Hierzu habe ich die Osterkennzahl E definiert. Vorteilhaft kann mit dieser Osterkennzahl direkt Ostertag und Monat berechnet werden.
Mit der Osterkennzahl wird auch sehr einfach das jeweilige Datum (Tag und Monat) der anderen variablen Feiertage einschließlich Buß- und Bettag, Advent, Muttertag und sogar die Sommerzeit bestimmt.
Achtung, hier müssen
Ganzzahl-Division (Kommastellen fallen weg) und Divisions-Rest (MOD) angewendet
werden, z.B. 2012 MOD 19 = 17 bedeutet
Rest bei Division 2012 / 19 = Rest 17.
(1) Osterberechnung
umformen in Datum Ostersonntag und
Monat Osterkennzahl
Andere Osterberechnungen z.B. nach Gauß liefern als Ergebnis das Märzdatum beispielsweise Z = 32 statt eines Datums bestehend aus Tag und Monat. Es muss noch umgeformt werden.
(1) Die Zahl Z = 32 für den 1. April ergibt mit 32 MOD 31 = 1 nur scheinbar ein Ergebnis, denn 31 MOD 31 = 0 für den 31. März wäre falsch.
Deshalb wird umgeformt: Z MOD 31 (= 0 bis 30) wird zu Ostersonntag = (Z – 1) MOD 31 + 1 (= 1 bis 31)
Nun stimmt der Tag für 31. März (31–1) MOD 31 +1 = 31 und bei Z = 32 für 1. April bleibt das richtige Tagesdatum bestehen (32 –1) MOD 31 +1 = 1
Jetzt fehlt noch die Berechnung des Monats. Für 22. bis 31. März ergibt Z / 32 = 0 und für 1. April (Z = 32) ergibt Z / 32 = 1. Monat = 3 + Z / 32 ergibt März oder April.
(2) Eine andere Lösung ist einfach : Ostermonat = 3 + Z / 32 und Ostersonntag = Z MOD 32 + Z / 32
(3) Besser ist bei Z (hier Z = 22) ein Vielfaches des Divisors (3*31= 93) beizufügen ohne das Ergebnis bei Modulo 31 zu verändern: (22 –1 + 93) MOD 31 +1 = 22
Dabei ergibt die Ganzzahldivision die richtige Monatszahl (22 –1 +93) / 31 = 3 für Ostern am 22. März sowie (32 –1 + 93) / 31= 4 für Ostern am 1. April.
Das Ergebnis einer Osterberechnung (Märzdatum z.B. nach Gauß) nenne ich hier Z. Daraus wird meine Osterkennzahl E = Z + 92 gebildet und hierauf beruhen die einfachen Formeln:
Ostersonntag = 1 + E
MOD 31 Ostermonat = E /
31
Datum Totensonntag im November Tag = 20 + E MOD 7 oder Wochentag Heiligabend WoTag = 6 – E MOD 7
Mit dieser Osterkennzahl E können die Termine anderer beweglicher Feiertage z.B. Pfingsten und sogar Advent, Weihnachten und vieles mehr nach meiner Methode ebenfalls sehr einfach berechnet werden.
(2) Osterkennzahl
mit bekanntem Osterdatum errechnen
Falls das Osterdatum in einer Anwendung bekannt ist, kann die Osterkennzahl aus dem Datum errechnet werden.
Schaltjahre sind in der Osterkennzahl bereits berücksichtigt. Andere Festtage und Sondertage sind dadurch einfach zu berechnen
Für Tag = Ostersonntag mit Monat = Ostermonat ist die Osterkennzahl E = Tag –1 + Monat * 31
Beispiel: Ostern am 8.4.2012 ergibt Osterkennzahl E = 8 –1 + 4 * 31 = 131
Tag = 16 + E MOD 7 ist der Buß- und Bettag, Tag = 16 + 5 = 21. November 2012
(3) Einfache Berechnung für Ostersonntag
(hier wird die Osterkennzahl direkt mit Jahr berechnet)
JAHR
(4-stellig) 1900 bis 2099 mit Ergänzung bis 2199
A = ( JAHR MOD
19 *19
+ 24 ) MOD 30 '
(Jahr 4-stellig)
B = 120 + A – A / 27 '
mit Ergänzung für Jahre 1954, 1981, 2049
und 2076
C = ( B + JAHR * 5 / 4 – JAHR / 2100 ) MOD 7 '. mit Ergänzung gültig bis 2199
E = B – C ' E Osterkennzahl (Easter),
Bezugswert für alle beweglichen Feiertage
Tag = 1+ E MOD 31 ' Ostersonntag (Datum Tag)
Monat = E / 31 ' Ostermonat (Monat)
(4) Osterberechnung für alle Jahrhunderte ab 1583
siehe Ergänzung und
Erläuterung
Test meiner Osterformeln mit Gauss / Dr.Lichtenberg,
J.M. Oudin, Anonym (Butcher), O'Beirne, Hutchin, Clavius
Piper (1841), Zeller (Fehler korrigiert) siehe
Osterformeln_Test.pdf
(5) Beispiel Jahr 2015
A
= ( JAHR MOD 19 *19 + 24 ) MOD 30 2015 MOD 19 = 1 ' Rest von
Division 2015 / 19
A = ( 1 *19 + 24 ) MOD 30 = (19 + 24) MOD 30 = 13 (Rest von Division 43 / 30 = 13)
B = 120 + A – A / 27
B = 120 + 13 – 0
= 133
C = ( B + JAHR * 5 / 4 ) MOD 7 2015 *5 / 4 = 2518
C = ( 133 + 2518) MOD 7 =
5
E = B – C = 133 – 5 = 128 ' E Osterkennzahl (Easter) für 2015
Tag
= 1+ E MOD 31 ' Ostersonntag (Datum Tag)
Tag = 1+ 128
MOD 31 = 1 + 4 = 5
Monat
= E / 31 ' Ostermonat (Monat)
Monat = 128
/ 31 = 4 Ostersonntag ist am 5.4.2015
(6) Berechnung der beweglichen Feiertage
(gilt für alle Jahre)
Palmsonntag (-7), Gründonnerstag (-3), Karfreitag (–2), Ostermontag (+1), Himmelfahrt / Vatertag (+39), Pfingsten (+49) und Fronleichnam (+60) sind ebenfalls bewegliche Feiertage, weil sie an das Osterdatum gekoppelt sind.
D = 39 ' Beispiel Himmelfahrt / Vatertag (Distanz
39 Tage nach Ostern)
F = E + D ' Ostern (Easter) + Abstand (Distanz) des
Feiertages
G = F + F / 154 '
G Kennzahl des gesuchten Tages
Tag = 1+ G MOD 31
' Datum Tag des gesuchten beweglichen
Feiertags
Monat = G / 31 ' Datum Monat
Anmerkung: F / 154 (ohne Kommastellen) überbrückt den
fehlenden 31.4.
Beispiel Himmelfahrt 2015
F = 128 + 39 = 167
G = 167 + 167 / 154 = 167 + 1 = 168
Tag = 1 + 168 MOD 31 = 1 + 13 = 14
Monat = 168 / 31 = 5 Himmelfahrt ist am 14.5.2015
(7) Berechnung der beweglichen Feiertage
einschließlich Karneval (Fasching, Fastnacht)
(gilt für alle Jahre)
Weiberfastnacht (–52), Rosenmontag (– 48), Aschermittwoch (– 46), Palmsonntag (–7), Karfreitag (–2), Ostermontag (+1), Himmelfahrt (+39), Pfingsten (+49) und Fronleichnam (+60)
Jesus Fastenzeit von 40 Tage in der Wüste ergibt sich aus der Differenz von Aschermittwoch und Palmsonntag, wobei der Beginn mitgezählt wird (Differenz +1).
In gleicher Weise wurde auch bei Himmelfahrt ursprünglich 40 Tage und bei Pfingsten ursprünglich 50 Tage nach Ostern gezählt.
D = – 48 '
Beispiel Rosenmontag ( Distanz 48 Tage vor Ostern)
F = E + D 'Ostern (Easter) + Abstand (Distanz) des
Feiertages
G = F + F / 154 – 92 / F * (3 – SJ) 'mit Ergänzung für Karnevalstage im Februar
Tag = 1+ G MOD 31
' Datum Tag des gesuchten beweglichen
Feiertags
Monat = G / 31 ' Datum Monat (G Kennzahl des gesuchten Tages und Monats)
SJ = 1 / (1+Jahr MOD 4) –1 / (1+Jahr MOD 100) +1 / (1+Jahr MOD 400) ' Schaltjahrkennung, im Schaltjahr = 1, sonst = 0
Die Jahrhundertregel –1 / (1+Jahr MOD 100) +1 / (1+Jahr MOD 400) kann bei Beschränkung auf 2001 bis 2099 weggelassen werden.
Beispiel Rosenmontag 2015
F = 128 – 48 = 80
G = 80 + 80 / 154 – 92 / 80 * (3 – SJ) = 80 –0 –1*(3 –0) = 77 , weil 2015 kein Schaltjahr SJ = 0 (Februar nur 28 bzw. 29 Tage, z.B. bei kein Schaltjahr –3)
Tag = 1 + 77 MOD 31 = 1 + 15
Monat = 77 / 31 = 2 Rosen Montag ist am 16.2.2015
(8) Berechnung der anderen beweglichen Feiertage mit der
Osterkennzahl (gilt für alle Jahre)
Buß- und Bettag, Advent,
Totensonntag, Volkstrauertag, Muttertag und auch Beginn und Ende der
Sommerzeit.
Weil
Ostern und Advent vom Jahr abhängen, hängt
auch Advent von Ostern ab.
Diese
Tage haben keine feste Distanz zu Ostern wie z.B. Pfingsten, aber sie hängen
trotzdem an Ostern, weil dessen Sonntag mit dem Datum verkoppelt ist.
Wenn
die Osterkennzahl durch die Berechnung von Ostern ohnehin bereits festliegt,
dann ist sinnvoll auch andere Feiertage mit meinen folgenden Formeln zu
bestimmen.
Die
Formeln sind kurz und sehr einfach, weil Jahr und Schaltjahr bereits in der
Osterkennzahl enthalten sind.
Die Osterkennzahl E (siehe oben) fertig berechnet:
E= 115 für 2008, E= 135 für 2009, E= 127 für 2010, E = 147
für 2011, E = 131 für 2012, E
= 123 für 2013, E= 143 für 2014, E= 128 für 2015.
Die Osterkennziffer E MOD
7 (Rest nach Division durch 7)
beträgt für 2008 (3), 2009 (2), 2010 (1), 2011 (0),
2012 (5), 2013 (4), 2014 (3), 2015 (2), 2016 (0),
2017 (6), ...
E MOD 7 folgt einem
Gesetz –1 von Jahr zu Jahr und
im Schaltjahr –2 . Wird die Zahl negativ, muss 7 addiert werden z.B.
2011 auf Schaltjahr 2012 (0 –2 +7 = 5).
Einfaches Rechnen: Die Osterkennziffer
E MOD 7 kann in die Formeln eingesetzt werden. Bei (E + 2) MOD 7 wird sie
für E eingesetzt.
Datum zum Wochentag berechnen mit
Osterkennzahl (gilt für alle Jahre)
Im Folgenden liegt der Wochentag (Mittwoch, Sonntag, usw.) fest
und es wird das zugehörige Datum (Tag) gesucht.
Berechnung des Buß- und Bettags mit dem Osterdatum (Osterkennzahl E oder
Osterkennziffer E MOD 7)
Tag = 16 + E MOD 7 ' Datum Tag für Buß- und Bettag (Mittwoch) im November (möglich ist 16. bis 22.11.)
Berechnung
Datum Muttertag (mit Osterkennzahl
E)
Tag = 8 + E MOD 7 ' Datum Tag für
Muttertag (2. Sonntag) im Mai, bei E= 114 bis 118
fällt Muttertag auf Pfingsten
Tag = 8 + E MOD 7 – 118 / E *7 ' Korrekturmöglichkeit auf 1. Sonntag im Mai
Der Quotient 118 / E hat
den Wert = 1, wenn die Osterkennzahl E = 114 bis 118 beträgt. Dann liegt Ostern
auf 22. bis 26. März und Pfingsten auf dem 2. Sonntag vom 10. bis 14. Mai.
Berechnung Datum Sommerzeit Winterzeit (mit Osterkennzahl E)
Tag
= 25+ ( E + 2 ) MOD 7 '
Datum Tag für Beginn Sommerzeit im März
Tag = 25+ ( E + 5 ) MOD 7 ' Datum Tag für
Ende Sommerzeit im Oktober
Berechnung
Datum Advent (mit Osterkennzahl E)
Tag = 18 + E MOD 7 ' Datum Tag für 4. Advent im Dezember, frühest möglicher Tag ist 18 und spätest möglicher Tag ist 18+6 = 24. Dezember
Tag = 11 + E MOD 7 ' Datum Tag für 3. Advent im Dezember
Tag = 4 + E MOD 7 ' Datum Tag für 2. Advent im Dezember
Tag = 1+ (26 + E MOD 7 ) MOD 30 ' Datum Tag für 1. Advent im Dezember / November
Frühest möglicher Tag ist 1+26 = 27. Nov. bei E MOD 7 = 0 und spätest möglicher Tag ist 3.12. bei E MOD 7 = 6.
Monat = 12 – Tag / 27 ' Datum Monat zu Tag der Adventsonntage (Dezember / November)
Berechnung
Datum Totensonntag (Ewigkeitssonntag, Christkönigssonntag) und Volkstrauertag
(mit Osterkennzahl E)
Tag = 20 + E MOD 7 ' Datum Tag für Totensonntag (Ewigkeitssonntag) im November
Tag = 13 + E MOD 7 ' Datum Tag für Volkstrauertag im November (möglich ist 13. bis 19.11.)
Das früheste und späteste Datum
wird
berechnet mit den Rest der Division bei ... MOD 7. Die Grenzwerte 0 und 6
führen zum Ergebnis.
Der
frühest mögliche Tag ergibt sich bei Grenzwert 0. Entsprechend ergibt sich auch der spätest mögliche Termin bei +6
Tage.
(9) Wochentag
zu einem Datum berechnen mit Osterkennzahl (gilt für alle Jahre
entsprechend Osterkennzahl)
Im Folgenden liegt das Datum
fest und es wird der zugehörige Wochentag (Mittwoch, Sonntag, usw.) gesucht.
Weil
Ostern und Weihnachten vom Jahr abhängen, hängt auch Weihnachten von Ostern ab.
Mit Ostern wird hier z.B. der Wochentag von Weihnachten berechnet. Dabei ist das Jahr beliebig, weil es schon in der Osterkennzahl berücksichtigt wurde.
Tag 0 bis 6 (So, Mo, Di, Mi, Do, Fr, Sa)
Wochentag von Heiligabend 24.12. und Silvester 31.12. und niederl. Koninginnedag 30.4.
WoTag = 6 – E MOD 7 ' Wochentag Heiligabend 24.12. und 31.12. und 30.4.
Beispiel E = 123 für 2013:
WoTag = 6 – E MOD 7 = 6 –123 MOD 7 = 6 –4 = 2 ' (24.12.2013 ist ein Dienstag).
In welchem Jahr fällt 24.12. (Weihnachten,
Heiligabend) auf Sonntag?
Bei E MOD 7 = 6 ist WoTag = 6 – 6 = 0. siehe
obige Tabelle: Jahr 2017 (6)
Der Niederländische Königinnentag liegt auf dem 30.4. Falls Sonntag, dann Samstag z.B. 29.4.2017
WoTag = 6 – E MOD 7 + E MOD 7 / 6 * 6 ' weekdag Koninginnedag, falls =0, dann =6, Samstag 29.4.
Wochentag vom 1. Weihnachtsfeiertag 25.12. oder Tag der Arbeit 1. Mai gleiches Jahr oder 1. Januar nächstes Jahr
WoTag = 6 – ( E + 6 ) MOD 7 ' Wochentag 1. Weihnachtstag 25.12. oder 1. Mai
WoTag = 6 * E MOD 7 ' alternative Formel für Wochentag 25.12. oder 1. Mai
Wochentag zu
Nikolaus 6.12.
WoTag = 6 – ( E + 4 ) MOD 7 ' Wochentag Nikolaus am 6.12.
Wochentag zu
Heilige Drei Könige 6.1. (Jahr) mit
Osterkennzahl des gleichen Jahres
WoTag = 6 – ( E + 2 + SJ ) MOD 7 ' Wochentag Heilige Drei Könige 6.1.
Wochentag zu
Heilige Drei Könige 6.1. (Jahr) mit
Osterkennzahl des Vorjahres
WoTag = 6 – ( E + 1 ) MOD 7 ' Wochentag Heilige Drei Könige 6.1.
Schaltjahr SJ muss nur bei Januar/Februar mit Osterkennzahl des gleichen Jahres berücksichtigt werden, weil eventuell der 29. Februar zwischen Ostern und 6. Januar liegt.
Allgemein
als Tag 0 bis 6 (So, Mo, Di, Mi, Do, Fr, Sa)
SJ = 1 /
(1+Jahr MOD 4) –1 / (1+Jahr MOD
100) +1 / (1+Jahr MOD
400) ' Schaltjahrkennung, im Schaltjahr = 1, sonst = 0
M = 1 + (Monat + 9) MOD 12 ' Monatszahl M ist März = 1 bis Februar = 12
KT = M * 31 / 12 + M / 11 * (6 – SJ) ' Korrekturwert Tag je nach Monat
WoTag = 6 – ( E – Tag – KT ) MOD 7 ' Wochentag für beliebiges Datum
Beispiel: Valentinstag 14.2.2012 ( Osterkennzahl E = 131), SJ = 1 (Schaltjahr)
M = 1 + (2 + 9) MOD 12 = 12
KT = 12 * 31 / 12 + 12 /11 * (6 –1) = 31+ 5 = 36
WoTag = 6 – (131 –14 – 36) MOD 7 = 6 – 4 = 2 ( Dienstag 14.2.2012)
Formel für alle Jahre, weil ( –14 –37) MOD 7 = –2 feststeht: Wegen Negativ wird 7 addiert = 5
Valentinstag: WoTag = 6 – ( E + 5 + SJ ) MOD 7
alternativ WoTag = ( 1 –
SJ + 6 * E ) MOD 7 ;
(1 – 0 + 6*3) MOD 7 = 5 (Jahr 2014 (3))
2.2.24) Datum mit Jahreszahl berechnen
Der Wochentag (Mittwoch, Sonntag,
usw.) liegt fest und es wird das zugehörige Datum (Tag) gesucht.
(1) Buß- und Bettag mit Jahreszahl berechnen
Jahr 2-stellig für Jahr 2000 bis 2099
Buss_Bet_Tag = 22 – (year + year / 4) MOD 7 ' Datum Tag für Buß- und Bettag (year 2-stellig, 00 bis 99) im November
Oder mathematisch umgeformt: Tag = 22 – ( year * 5 / 4 ) MOD 7
Jahr 4-stellig für Jahr 1901 bis 2099
Buss_Bet_Tag = 22 – (JAHR –1 + JAHR / 4) MOD 7 ' Datum Tag für Buß- und Bettag (Jahr 4-stellig, 1901 bis 2099)
Anmerkung: Das Datum eines Wochentags hängt allein vom Jahr ab.
Der Rest nach der Division (MOD 7) beträgt 0 bis 6. Dieser Wert wird vom spätest möglichen Tag 22 abgezogen, dadurch liegt der Buß- und Bettag auf dem 16. bis 22. November.
Diesen Rest nenne ich Jahreskennziffer Jx. Damit kann noch einfacher gerechnet werden.
(2) Jahreskennziffer
Jx
Buss_Bet_Tag = 22 – Jx ' Datum Tag für Buß- und Bettag im November
Der folgend errechnete Wert Jx kann auf verschiedene Weise gebildet werden.
Jx ist der
Wochentag vom 31.12. in jedem Jahr, auch im Schaltjahr.
Jx = (year + year / 4) MOD 7 ' year 2-stellig 00 bis 99 für 2000 bis 2099
Jx = year * 5 / 4 MOD 7 ' year 2-stellig (weitere Möglichkeit)
Jx = (Jahr –1 + Jahr / 4) MOD 7 ' Jahr 4-stellig 1901 bis 2099
Jx = (Jahr * 5 – 4 ) / 4 MOD 7 ' Jahr 4-stellig (weitere Möglichkeit)
Jx = (Jahr + Jahr / 4 – Jahr / 100 + Jahr / 400) MOD 7 ' Jahr 4-stellig ab 1583 (gregorianisch)
Jx = 6 – E MOD 7 ' mit Osterkennzahl E, alle Jahre ab 1583 (gregorianisch)
Anmerkung: Die Jahreskennziffer hängt auch mit der Osterkennziffer Ed (siehe oben) zusammen. Die Formel lautet Jx = 6 – Ed
(3) Muttertag,
Sommerzeit, Advent, usw. mit Jahreskennziffer berechnen
1.)
Muttertag
ist der zweite Sonntag im Mai mit dem spätest möglichen Tag 14. Mai. Soll Pfingsten berücksichtigt werden, wird mit der Osterkennzahl (siehe oben) gerechnet.
Tag = 14 – Jx ' Datum Tag für Muttertag im Mai
2.)
Advent
Tag = 24 – Jx ' Datum Tag für 4. Advent im Dezember
Tag = 17 – Jx ' Datum Tag für 3. Advent im Dezember
Tag = 10 – Jx ' Datum Tag für 2. Advent im Dezember
Tag = 1 + (32 – Jx) MOD 30 ' Datum Tag für 1. Advent im Dezember / November
Monat = 12 – Tag / 27 ' Datum Monat jeweils Tag des Advents (Dezember / November)
3.)
Totensonntag und Volkstrauertag
Tag = 26 – Jx ' Datum Tag für Totensonntag (Ewigkeitssonntag) im November
Tag = 19 – Jx ' Datum Tag für Volkstrauertag im November
4.)
Sommerzeit Winterzeit (Merkerbit Sommerzeit für
Steuerungen siehe Teil 2 Uhr)
Beginn der Sommerzeit ist letzter Sonntag im März mit dem spätest möglichen Tag 31.3. (Konstante = 5).
Tag = 31 – (Jx + 5) MOD 7 ' Datum Tag für Beginn Sommerzeit im März
Ende der Sommerzeit ist letzter Sonntag im Oktober mit dem spätest möglichen Tag 31.10. (Konstante = 2)
Tag = 31 – (Jx + 2) MOD 7 ' Datum Tag für Ende Sommerzeit im Oktober
5.)
Sommerzeit
direkt mit Jahr berechnet 2-stellig für 2000 bis 2099
Tag = 31 – ( 5 + year*5 / 4) MOD 7 ' Datum Tag für Beginn Sommerzeit (year 2-stellig)
Tag = 31 – ( 2 + year*5 / 4) MOD 7 ' Datum Tag für Ende Sommerzeit (year 2-stellig)
6.) Sommerzeit mit 4-stelligem Jahr (1901) 1996 bis 2099
Im Vergleich zur 2-stelligen Jahreszahl ist die Konstante um –1 verringert.
Tag = 31 – (Jahr + 4 + Jahr / 4) MOD 7 ' Datum Tag für Beginn Sommerzeit (Jahr 4-stellig)
Tag = 31 – (Jahr + 1 + Jahr / 4) MOD 7 ' Datum Tag für Ende Sommerzeit (Jahr 4-stellig)
Tag = 31 – ( 4 + Jahr*5 / 4) MOD 7 ' Datum Tag für Beginn Sommerzeit (Jahr 4-stellig)
Tag = 31 – ( 1 + Jahr*5 / 4) MOD 7 ' Datum Tag für Ende Sommerzeit (Jahr 4-stellig)
Anmerkung: Die jetzt gültige Sommerzeit von März bis Oktober jeweils letzter Sonntag wurde 1996 eingeführt.
2-stellig für 2000 bis 2099 oder
4-stellig für 1900 bis 2099 oder beliebiges Jahr mit Osterkennzahl
(1)
Eidgenössischer
Dank-, Buss- und Bettag
wird am dritten Sonntag im September gefeiert, mögliches Datum 15. bis 21.9.
Tag = 21 – (4 + year *5 / 4) MOD 7 ' Datum Tag für Sonntag spätestens am 21. 9. (year 2-stellig)
Tag = 21 – (3 + Jahr *5 / 4) MOD 7 ' Datum Tag für Sonntag spätestens am 21. 9. (Jahr 4-stellig)
Dieser Tag kann ebenfalls mit der Osterkennzahl (siehe oben) berechnet werden.
Tag = 15 + (E + 3) MOD 7 ' mit Osterkennzahl E, Datum Tag für Sonntag frühestens am 15.9.
(2)
Genfer Bettag
liegt auf dem Donnerstag nach dem ersten Sonntag im September.
Tag = 11 – (4 + year *5 / 4) MOD 7 ' Datum Tag für Donnerstag spätestens am 11. 9. (year 2-stellig)
Tag = 11 – (3 + Jahr *5 / 4) MOD 7 ' Datum Tag für Donnerstag spätestens am 11. 9. (Jahr 4-stellig)
Tag = 5 + (E + 3) MOD 7 ' mit Osterkennzahl E, Datum Tag für Donnerstag frühestens am 5.9.
(3)
Berner Zwiebelmarkt
am 4. Montag im November bedeutet spätester Termin 28.11.
Tag = 28 – ( 1 + year *5 / 4 ) MOD 7 ' Berner Zibelemärit, (year 2-stellig)
Tag = 28 – ( Jahr *5 / 4 ) MOD 7 ' Berner Zibelemärit, (Jahr 4-stellig)
Tag = 22 + (E + 6) MOD 7 ' berechnet mit Osterkennzahl E, Datum Tag für Montag frühestens am 22.11.
2.2.26) Datum sonstiger Feiertage oder Sondertage
selber bestimmen (siehe Ergänzung und
Erläuterung)
2.2.27)
Ostersonntag (Tag und Monat) berechnen für Steuerungsgeräte in Basic z.B.
c-control
Fortsetzung Datum
berechnen für Steuerungen
------------------------------------------------ ENDE Teil 2 Datum berechnen ------------ nach_oben
--------------------- weiter zu Teil 3 Teil 4 zurück zu Tipps und Tricks Teil_1 Startseite
Für Rückfragen und Hinweise: Datum@M.Wilzeck.de