Kalenderformel

Wer weiss, wie die Kalenderformel lautet?
Zwecks Kalendergenerierung.

Ich nehme an, dass ich die Schaltjahr-Problematik nicht berücksichtige. Deshalb
brauche ich eine Kalenderformel, die Schaltjahr-Problematik und sonstige relevate Daten, wie Anfang und Ende
der Winter- und Sommerzeit(genaue Daten, Uhrzeit…), einschliesst.

Mit Dank & Gruss

R.K.

Sommer / Winterzeit keine Ahnung.

Schaltjahr sind alle durch 4 teilbaren Jahre, aber nicht durch 100 teilbare Jahre.
Durch 400 teilbare Jahre sind aber von der 100-Jahr-Regel ausgenommen und sind auch Schlatjahre (wie z.b. das Jahr 2000).

Bruno

Servus Romuald

Wer weiss, wie die Kalenderformel lautet?
Zwecks Kalendergenerierung.

Geht relativ einfach, habe sogar ich zusammengebracht. Von 1900 - 2099 funktionierts so: Alle 28 (4 * 7)Jahre beginnt ein neuer Zyklus. Man macht sich eine Tabelle von diesen 28 Jahren in die man den Wochentag vom 1. Jänner des jeweiligen Jahres hineinschreibt. Dann muß man noch ausrechnen, der wievielte Tag ein Datum im Jahr ist. Also wieder eine kleine Tabelle, der wievielte Tag ist der jeweilige 1. vom jeweiligen Monat im Jahr. Dazu den Tag im Monat dazuzählen. Ist es ein Schaltjahr (Modulo 4 von 1900 an), muß man ab dem 1. März einen Tag dazuzählen. Dann den Tag vom 1. Jänner (aus unserer 1. Tabelle)dazuzählen (Modulo 28 von 1900 an). Dann Modulo 7, und schon hat man den Wochentag. Ich hab’s in PL/1 programmiert. War mit allen CICS-Anweisungen nicht größer als 2 Seiten. Macht man einen Kalender über 2100 oder unter 1900 muß man noch berücksichtigen, daß das keine Schaltjahre waren.

Servus

Herbert

Hier noch ein Kochrezept.

Alle Divisionen sind ganzzahlig auszuführen.

  • Teile die letzten beiden Ziffern der Jahreszahl durch 12 und addiere das Ergebnis der Division zum Divisionsrest
  • Dazu addiere die Zahl, die man erhält, wenn man den Divisionsrest durch 4 teilt
  • Dazu addiere den Tag des Monats
  • Dazu addiere die Kennziffer des Monats (siehe unten)
  • Ist das Jahr ein Schaltjahr und der Monat Januar oder Februar, so subtrahiere 1
  • Für das 19. Jahrhundert addiere 2, für das 21. subtrahiere 1, für das 20. tu garnix
  • Bilde von der Zahl, die Du jetzt hast, den Divisionsrest bei Division durch 7. Dieser liefert den Wochentag (0 = Samstag, 1=Sonntag …)

Hier die erforderlichen Monatskennziffern: Jan: 1, Feb: 4, Mrz: 4, Apr: 0, Mai: 2, Jun: 5, Jul: 0, Aug: 3, Sep: 6, Okt: 1, Nov: 4, Dez: 6

Wenn Du das als Kopfrechentrick aufführen möchtest, kannst Du nach jedem Schritt schon den Divisionsrest modulo 7 bilden. Das erleichtert die Sache.

Sommer/Winterzeit:
Jeweils letzter Sonntag im März/Oktober