Umrechnung zwischen julianischem Datum und gregorianischem Kalender

aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von Laufender Tag)
Zur Navigation springen Zur Suche springen

Das julianische Datum zählt die Tage seit dem 1. Januar 4713 v. Chr. (JD = 0) durch. Dieses Datum basiert auf dem proleptischen (vorgezogenen) julianischen Kalender, der erst später eingeführt wurde.

Der gregorianische Kalender wurde im Jahre 1582 eingeführt, um die Abweichung des julianischen Kalenders vom Sonnenjahr aufzufangen. Die Verbreitung war aber nicht einheitlich: In protestantischen Gebieten galt der julianische Kalender noch weit länger, z. T. bis ins 18. Jh. Geburtsdaten aus diesen Regionen werden oft ohne Beachtung des zu jener Zeit geltenden Kalenders angegeben.

Tabellengesteuerte Umrechnung

[Bearbeiten | Quelltext bearbeiten]
Unterschied Daten
0 Tage 4. Oktober 1582jul.
10 Tage 5. Oktoberjul. / 15. Oktober 1582greg.
10 Tage 28. Februarjul. / 10. März 1700greg.
11 Tage 29. Februarjul. / 11. März 1700greg.
11 Tage 1. Märzjul. / 12. März 1700greg.
11 Tage 28. Februarjul. / 11. März 1800greg.
12 Tage 29. Februarjul. / 12. März 1800greg.
12 Tage 1. Märzjul. / 13. März 1800greg.
12 Tage 28. Februarjul. / 12. März 1900greg.
13 Tage 29. Februarjul. / 13. März 1900greg.
13 Tage 1. Märzjul. / 14. März 1900greg.
13 Tage 15. Februarjul. / 28. Februar 2000greg.
13 Tage 16. Februarjul. / 29. Februar 2000greg.
13 Tage 17. Februarjul. / 1. März 2000greg.
13 Tage 28. Februarjul. / 12. März 2000greg.
13 Tage 29. Februarjul. / 13. März 2000greg.
13 Tage 1. Märzjul. / 14. März 2000greg.
13 Tage 28. Februarjul. / 13. März 2100greg.
14 Tage 29. Februarjul. / 14. März 2100greg.
14 Tage 1. Märzjul. / 15. März 2100greg.

Bei der Kalenderreform 1582 wurden zehn Tage übersprungen. Diese zehn Tage bilden den Unterschied zwischen den beiden Kalendern bis zum 29. Februarjul. / 11. März 1700greg.. Im julianischen Kalender folgt ein Schalttag, im gregorianischen hat 1700 keinen Schalttag, daher beträgt der Unterschied ab 1. Märzjul. / 12. März 1700greg. elf Tage. Jeweils in den Jahren 1800, 1900, 2100, 2200, 2300, 2500 etc., vergrößert sich der Abstand zwischen dem gregorianischen und dem julianischen Datum um einen weiteren Tag. Im 20. wie auch im 21. Jahrhundert beträgt er 13 Tage. Am 8. Julijul. / 21. Juli 1969greg. betrat Neil Armstrong als erster Mensch den Mond.

In dieser Rechnung wird die Tageszählung seit Jahresanfang, beginnend mit 0, laufender Tag (LT) genannt. Für den 1. Januar ist LT=0, für den 31. Dezember LT=364 (Normaljahr) bzw. LT=365 (Schaltjahr).

Zur Umrechnung zwischen dem Datum und dem laufenden Tag siehe Berechnung des laufenden Tages.

Das dabei anzuwendende Schaltjahreskriterium lautet:

Schaltjahre sind in der Regel die durch 4 teilbaren Jahre. Allerdings gilt:
Die durch 100 teilbaren Jahre sind nur dann Schaltjahre, wenn sie auch durch 400 teilbar sind. (Also war z. B. 2000 ein Schaltjahr, 1900 nicht.)

In dieser Rechnung wird der Anfang des gregorianischen Kalenders auf den 1. Januar des Jahres 1 vorverlegt. Dadurch beginnt der Kalender am Anfang eines 400-Jahres-Zyklus und die Rechnung vereinfacht sich. Als laufendes Jahr (LJ) wird die Anzahl Jahre ab diesem Startjahr bezeichnet. Für das Jahr 1 ist LJ=0, für das Jahr 2 ist LJ=1 usw. Das julianische Datum dieses Tages ist JD0 = 1721426.

Gregorianischer Kalender → julianisches Datum

[Bearbeiten | Quelltext bearbeiten]

Aus Monat (M) und Tag (T) wird unter Berücksichtigung des Schaltjahreskriteriums der laufende Tag (LT) ermittelt (siehe Umrechnung zwischen julianischem Datum und julianischem Kalender).

Dann wird aus dem Jahr (J) das laufende Jahr (LJ) berechnet:

 LJ = J - 1

Zur Berechnung des julianischen Datums wird die Anzahl der vollen 400-Jahres-Zyklen (N400) seit dem Startjahr, sowie die Anzahl der vollen Jahre (R400) im letzten, unvollständigen 400-Jahres-Zyklus berechnet:

 N400 = LJ/400 (ganzzahlig)
 R400 = Rest dieser Division

Aus R400 wird die Anzahl der vollen 100-Jahres-Zyklen (N100) des letzten 400-Jahres-Zyklus, sowie die Anzahl der vollen Jahre (R100) im letzten, unvollständigen 100-Jahres-Zyklus berechnet:

 N100 = R400/100 (ganzzahlig)
 R100 = Rest dieser Division

Dann wird aus R100 die Anzahl der vollen 4-Jahres-Zyklen (N4) des letzten 100-Jahres-Zyklus, sowie die Anzahl der vollen Jahre (N1) im letzten, unvollständigen 4-Jahres-Zyklus berechnet:

 N4 = R100/4 (ganzzahlig)
 N1 = Rest dieser Division

Das julianische Datum berechnet sich dann zu:

 JD = JD0 + N400*146097 + N100*36524 + N4*1461 + N1*365 + LT

Die Zahlen sind die Länge der Zyklen in Tagen. 1461 (3*365+366) für den 4-Jahres-Zyklus, 36524 (24*1461 + 1460) für den 100-Jahres-Zyklus und 146097 (3*36524 + 36525) für den 400-Jahres-Zyklus.

Julianisches Datum → gregorianischer Kalender

[Bearbeiten | Quelltext bearbeiten]

Um ein Datum des gregorianischen Kalenders bei gegebenem julianischen Datum zu berechnen, werden zunächst die Anzahl der vollen 4-Jahres-Zyklen (N400) seit dem Startjahr und die Anzahl Tage (R400) des letzten, unvollständigen 400-Jahres-Zyklus berechnet:

 N400 = (JD - JD0)/146097 (ganzzahlig)
 R400 = Rest dieser Division

Als Nächstes wird die Anzahl der vollen 100-Jahres-Zyklen (N100) des unvollständigen 400-Jahres-Zyklus berechnet sowie die Anzahl Tage (R100) des letzten, unvollständigen 100-Jahres-Zyklus:

 N100 = R400/36524 (ganzzahlig)
 R100 = Rest dieser Division

Am letzten Tag des Zyklus ergibt die Rechnung N100=4 und R100=0. In diesem Fall müssen die Werte korrigiert werden:

 falls (N100=4) setze N100=3 und R100=36524

Dann wird die Anzahl der vollen 4-Jahres-Zyklen (N4) des unvollständigen 100-Jahres-Zyklus berechnet, sowie die Anzahl Tage (R4) des letzten, unvollständigen 4-Jahres-Zyklus:

 N4 = R100/1461 (ganzzahlig)
 R4 = Rest dieser Division

Schließlich wird die Anzahl der vollen Jahre (N1) des unvollständigen 4-Jahres-Zyklus berechnet, sowie der laufende Tag (LT) im letzten Jahr:

 N1 = R4/365 (ganzzahlig)
 LT = Rest dieser Division

Am letzten Tag des Zyklus ergibt die Rechnung N1=4 und LT=0. In diesem Fall müssen die Werte korrigiert werden:

 falls (N1=4) setze N1=3 und LT=365

Das laufende Jahr LJ ergibt sich zu:

 LJ = 400*N400 + 100*N100 + 4*N4 + N1

Die Berechnung der Jahreszahl (J) aus LJ ergibt sich durch:

 J = LJ + 1

Zur Berechnung von Monat (M) und Tag (T) aus LT siehe Umrechnung zwischen julianischem Datum und julianischem Kalender.

Gregorianischer Kalender in julianisches Datum

[Bearbeiten | Quelltext bearbeiten]
  1.1.2000 GK:   SK  = 0
                 MK  = -1
                 LT  = T + 30*(M-1) + SK + MK
                     = 1 + 30*0 - 1
                     = 0
                 LJ  = J - 1
                     = 1999
                 N400= LJ/400
                     = 4
                  R400= 399   (Rest davon)
                 N100= R400/100
                     = 3
                 R100= 99    (Rest davon)
                 N4  = R100/4
                     = 24
                 N1  = 3     (Rest davon)
                 JD  = JD0 + N400*146097 +                    = 1721426 + 584388 + 109572 + 35064 + 1095 + 0
 --> 2451545 JD
 31.12.1600 GK:  SK  = 1
                 MK  = 3
                 LT  = T + 30*(M-1) + SK + MK
                     = 31 + 30*11 + 1 + 3
                     = 365
                 LJ  = J - 1
                     = 1599
                 N400= LJ/400
                     = 3
                 R400= 399   (Rest davon)
                 N100= R400/100
                     = 3
                 R100= 99    (Rest davon)
                 N4  = R100/4
                     = 24
                 N1  = 3     (Rest davon)
                 JD  = JD0 + N400*146097 + N100*36524 + N4*1461 + N1*365 + LT
                     = 1721426 + 3*146097 + 109572 + 35064 + 1095 + 365
 --> 2305813 JD

Julianisches Datum in gregorianischen Kalender

[Bearbeiten | Quelltext bearbeiten]
 2451545 JD:    N400= (JD - JD0)/146097
                    = 730119/146097
                    = 4
                R400= 145731  (Rest davon)
                N100= R400/36524
                    = 3
                R100= 36159  (Rest davon)
                N4  = R100/1461
                    = 24
                R4  = 1095  (Rest davon)
                N1  = R4/365
                    = 3
                LT  = 0   (Rest davon)
                LJ  = 400*N400 + 100*N100 + 4*N4 + N1
                    = 1999
                 J  = LJ + 1
                    = 2000
                 M  = (LT+1)/30 + 1
                    = 1
                SK  = 0
                MK  = -1
                 T  = LT - 30*(M-1) - (SK + MK)
                    = 0 - 30*0 + 1
                    = 1
 --> 1.1.2000 GK
 2305813 JD:    N400= (JD - JD0)/146097
                    = 584387/146097
                    = 3
                R400= 146096  (Rest davon)
                N100= R400/36524
                    = 4
                R100= 0  (Rest davon)
                Korrektur, da N100=4:
                N100= 3
                R100= 36524
                N4  = R100/1461
                    = 24
                R4  = 1460  (Rest davon)
                N1  = R4/365
                    = 4
                LT  = 0   (Rest davon)
                Korrektur, da N1=4:
                N1  = 3
                LT  = 365
                LJ  = 400*N400 + 100*N100 + 4*N4 + N1
                    = 1599
                 J  = LJ + 1
                    = 1600
                 M  = (LT+1)/30 + 1
                    = 13
                Korrektur, da M>12:
                 M  = 12
                SK  = 1
                MK  = 3
                 T  = LT - 30*(M-1) - (SK + MK)
                    = 365 - 30*11 - 4
                    = 31

Julianisches Datum → gregorianischer Kalender: Andere mögliche Umrechnung

[Bearbeiten | Quelltext bearbeiten]

Am Beispiel:

            JD = 2447892,5

Man addiert 0.5 zum JD und setzt für Z den Integer-Teil und für F den Dezimalteil (Teil nach dem Komma) ein. Zu beachten ist, wenn:

Z < 2299161 dann ist:

                     a = Z

Z > 2299161 dann ist:

                     a = INT ((Z - 1867216.25) / 36524.25)
                     A = Z + 1 + a - INT (a / 4)
                     B = A + 1524
                     C = INT ((B - 122.1) / 365.25)
                     D = INT (365.25 * C)
                     E = INT ((B - D) / 30.6001)

Der Tag berechnet sich aus:

                     T = B - D - INT (30.6001 * E) + F

Der Monat:

                     M = E - 1 	wenn E < 14
                     M = E - 13    wenn E = 14 oder 15

Das Jahr:

                     Y = C - 4716 	wenn m > 2
                     Y = C - 4715  wenn m = 1 oder 2

Man erhält folgende Werte:

                    JD = 2447892,5 + 0.5
                       = 2447893
                     Z = 2447893
                     F = 0

Da Z > 2299161 erhält man nun:

                     a = INT ((2447893 - 1867216.25) / 36524.25)
                       = 15
                     A = 2447893 + 1 + 15 - INT (15 / 4)
                       = 2447906
                     B = 2449430
                     C = 6705
                     D = 2449001
                     E = 14

Ergebnis:

                     T = 1 	
                     M = E - 13 	
                       = 1    	denn E = 14
                     Y = C - 4715	
                       = 1990 	denn m = 1

Das gesuchte Datum ist der 1. Januar 1990

Wochentag bestimmen

[Bearbeiten | Quelltext bearbeiten]

Dies erfolgt mit Hilfe des julianischen Datums. Man berechnet zuerst für das gegebene Datum das JD, addiere dieses mit 1.5 und dividiere das Ergebnis durch 7. Der Divisionsrest (Modulo) zeigt den Wochentag an:

                    0 = Sonntag
                    1 = Montag
                        ...
                    6 = Samstag

Am Beispiel: 1. Januar 1990

       1. Januar 1990 = 2447892,5
      2447892,5 + 1.5 = 2447894
        2447894 MOD 7 = 1

Der 1. Januar 1990 war ein Montag.

Vorhandene Funktionen auf Computersystemen

[Bearbeiten | Quelltext bearbeiten]

Solche Umrechnungen für Zeitbereiche von einigen Jahrzehnten vor oder nach der Gegenwart (Anfang 21. Jahrhundert) werden von gängigen Computer-Betriebssystemen und Laufzeitumgebungen (z. B. als Funktion mktime() für C++ und andere Programmiersprachen). Auf Unix-artigen Systemen lässt sich das julianische Datum berechnen, indem man die „vergangenen Sekunden seit 1.1.1970 00:00 (time_t)“ durch 60*60*24 = 86400 dividiert und die Konstante 2440587,5 addiert. Somit müssen in Computerprogrammen solche Umrechnungen nur für weitergehende Zeitbereiche bzw. auf autonomen Mikrocontrollern (sofern auf diesen keine vollständige Laufzeitumgebung zur Verfügung steht) implementiert werden.