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:  13.1.2014)

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,   Neu

 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

 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, Pfingsten, Fronleichnam

Auch_mit_Osterdatum_berechnen   Buß- und Bettag , Totensonntag, Muttertag , Datum Sommerzeit , Datum Advent,

Wochentag_mit_Osterkennzahl berechnen für Weihnachten und Silvester,  Wochentag Nikolaus 

 Feiertage mit Jahreszahl berechnen  (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)

nach_oben

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)

nach_oben

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)

nach_oben

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)

(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)

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.

nach_oben

(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.

nach_oben

(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)

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 vorzugsweise 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).

nach_oben

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 2013

A = ( JAHR MOD 19  *19 + 24 ) MOD 30   2013 MOD 19 = 18 ' Rest von Division 2013 / 19

A = ( 18 *19 + 24 ) MOD 30 = (342 + 24) MOD 30 = 6  (Rest von Division 366 / 30 = 6)

B = 120 + A – A / 27

B = 120 + 6 – 0  = 126

C = ( B + JAHR * 5 / 4 ) MOD 7       2013 *5 / 4 = 2516

C = ( 126+ 2516) MOD 7  = 3

E =  B –  C  = 126 – 3 = 123   ' E  Osterkennzahl (Easter) für 2013

Tag = 1+ E MOD 31  ' Ostersonntag (Datum Tag)

Tag = 1+ 123 MOD 31 = 1 + 30 = 31

Monat = E / 31            ' Ostermonat    (Monat)

Monat = 123 / 31 = 3    Ostersonntag ist am 31.3.2013

nach_oben

(6)   Berechnung der beweglichen Feiertage  (gilt für alle Jahre)

Palmsonntag (-7), Gründonnerstag (-3), Karfreitag (2), Ostermontag (+1), Himmelfahrt (+39), Pfingsten (+49) und Fronleichnam (+60) sind ebenfalls bewegliche Feiertage, weil sie an das Osterdatum gekoppelt sind.

D = 39  ' Beispiel Himmelfahrt (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 2013

F = 123 + 39 = 162

G = 162 + 162 / 154 = 162 + 1 = 163

Tag = 1 + 163 MOD 31 = 1 + 8 = 9

Monat = 163 / 31 = 5  Himmelfahrt ist am 9.5.2013

(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 2013

F = 123 – 48 = 75

G = 75 + 75 / 154 – 92 / 75 * (3  – SJ) = 75 –0 –1*(3 –0) = 72 , weil  2013 kein Schaltjahr SJ = 0 (Februar nur 28 bzw. 29 Tage, z.B. bei kein Schaltjahr  –3)

Tag = 1 + 72 MOD 31 = 1 + 10

Monat = 72 / 31 = 2                Rosen Montag ist am 11.2.2013

(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.

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.

nach_oben

(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))

 

nach_oben

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 = 14Jx  ' 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.2.25)   Schweizer Feiertage

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.

nach_oben

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

 

Free counter and web stats