Konwersja między datą juliańską a kalendarzem gregoriańskim

Julian data liczy dni od January 1st, 4713 pne. Chr. (JD = 0) do. Data ta jest oparta na proleptycznym (zaawansowanym) kalendarzu juliańskim , który został wprowadzony później.

Kalendarz gregoriański został wprowadzony w 1582 roku w celu skompensowania odchylenia juliańskiego kalendarza z roku słonecznego.

Konwersja sterowana tabelą

różnica Dane
0 dni 4 października 1582 Jul.
10 dni 5 października Jul. / 15 października 1582 greg.
10 dni 28 lutego Jul. / 10 marca 1700 greg.
11 dni 29 lutego Jul. / 11 marca 1700 greg.
11 dni 1 marca lip. / 12 marca 1700 greg.
11 dni 28 lutego Jul. / 11 marca 1800 greg.
12 dni 29 lutego Jul. / 12 marca 1800 greg.
12 dni 1 marca lip. / 13 marca 1800 greg.
12 dni 28 lutego Jul. / 12 marca 1900 greg.
13 dni 29 lutego Jul. / 13 marca 1900 greg.
13 dni 1 marca lip. / 14 marca 1900 greg.
13 dni 15 lutego lip. / 28 lutego 2000 greg.
13 dni 16 lutego, lip. / 29 lutego 2000 greg.
13 dni 17 lutego Jul. / 1 marca 2000 greg.
13 dni 28 lutego Jul. / 12 marca 2000 greg.
13 dni 29 lutego Jul. / 13 marca 2000 greg.
13 dni 1 marca lip. / 14 marca 2000 greg.
13 dni 28 lutego Jul. / 13 marca 2100 greg.
14 dni 29 lutego Jul. / 14 marca 2100 greg.
14 dni 1 marca lip. / 15 marca 2100 greg.

Wraz z reformą kalendarza z 1582 roku pominięto dziesięć dni. Te dziesięć dni stanowi różnicę między dwoma kalendarzami do 29 lutego . / 11 marca 1700 greg. . W kalendarzu juliańskim jest dzień przestępny, w gregoriańskim 1700 nie ma dnia przestępnego, więc różnica od 1 marca to lipiec. / 12 marca 1700 greg. jedenaście dni. W każdym z lat 1800, 1900, 2100, 2200, 2300, 2500 itd., Odstęp między datą gregoriańską a juliańską wydłuża się o kolejny dzień. W XX i XXI wieku jest to 13 dni. W dniu 8 lipca Lip. / 21 lipca 1969 greg. wszedł Neil Armstrong stał się pierwszym człowiekiem na Księżycu.

Bieżący dzień

W tym obliczeniu liczba dni od początku roku, począwszy od 0, nazywana jest dniem bieżącym (LT). LT = 0 dla 1 stycznia, LT = 364 (rok normalny) lub LT = 365 (rok przestępny) dla 31 grudnia .

Aby przeliczyć datę na dzień bieżący, zobacz Obliczanie dnia bieżącego .

Kryterium roku przestępnego, które należy zastosować, jest:

Lata przestępne to zazwyczaj lata podzielne przez 4. Jednak:
Lata podzielne przez 100 są latami przestępnymi tylko wtedy, gdy są podzielne przez 400. (Na przykład rok 2000 był rokiem przestępnym, 1900 nie).

Bieżący rok

W tych obliczeniach początek kalendarza gregoriańskiego przesuwa się na 1 stycznia 1 roku. Oznacza to, że kalendarz zaczyna się na początku 400-letniego cyklu i obliczenia są uproszczone. Bieżący rok (LJ) oznacza liczbę lat od roku wyjściowego. Dla roku 1 LJ = 0, dla roku 2 LJ = 1 itd. Data juliańska tego dnia to JD0 = 1721426.

Kalendarz gregoriański → Data juliańska

Bieżący dzień (LT) jest określany na podstawie miesiąca (M) i dnia (T), z uwzględnieniem kryterium roku przestępnego (patrz przeliczanie między datą juliańską a kalendarzem juliańskim ).

Następnie bieżący rok (LJ) jest obliczany z roku (J):

 LJ = J - 1

Aby obliczyć datę juliańską, oblicza się liczbę pełnych 400-letnich cykli (N400) od roku początkowego oraz liczbę pełnych lat (R400) w ostatnim, niekompletnym 400-letnim cyklu:

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

Liczbę pełnych 100-letnich cykli (N100) z ostatniego 400-letniego cyklu i liczbę pełnych lat (R100) w ostatnim niekompletnym 100-letnim cyklu oblicza się z R400:

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

Następnie z R100 oblicza się liczbę pełnych 4-letnich cykli (N4) z ostatniego 100-letniego cyklu oraz liczbę pełnych lat (N1) w ostatnim niekompletnym 4-letnim cyklu:

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

Data juliańska jest następnie obliczana w następujący sposób:

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

Liczby oznaczają długość cykli w dniach. 1461 (3 * 365 + 366) dla cyklu 4-letniego, 36524 (24 * 1461 + 1460) dla cyklu 100-letniego i 146097 (3 * 36524 + 36525) dla cyklu 400-letniego.

Data juliańska → kalendarz gregoriański

Aby obliczyć datę w kalendarzu gregoriańskim z daną datą juliańską, oblicza się liczbę pełnych 4-letnich cykli (N400) od roku początkowego oraz liczbę dni (R400) ostatniego, niekompletnego 400-letniego cyklu:

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

Następnie oblicza się liczbę pełnych 100-letnich cykli (N100) niepełnego 400-letniego cyklu oraz liczbę dni (R100) ostatniego, niekompletnego 100-letniego cyklu:

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

W ostatnim dniu cyklu obliczenie daje N100 = 4 i R100 = 0. W takim przypadku wartości należy skorygować:

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

Następnie obliczana jest liczba pełnych 4-letnich cykli (N4) niepełnego 100-letniego cyklu oraz liczba dni (R4) ostatniego, niepełnego 4-letniego cyklu:

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

Na koniec obliczana jest liczba pełnych lat (N1) niepełnego 4-letniego cyklu, a także dzień bieżący (LT) w ostatnim roku:

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

W ostatnim dniu cyklu obliczenie daje N1 = 4 i LT = 0. W takim przypadku wartości należy skorygować:

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

Bieżący rok LJ daje:

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

Obliczenie roku (J) z LJ wynika z:

 J = LJ + 1

Aby obliczyć miesiąc (M) i dzień (D) z LT, zobacz Konwersja między datą juliańską a kalendarzem juliańskim .

Przykłady

Kalendarz gregoriański w dacie juliańskiej

  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

Data juliańska w kalendarzu gregoriańskim

 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

Data juliańska → kalendarz gregoriański: Inne możliwe konwersje

Przykładowy:

            JD = 2447892,5

Dodaj 0,5 do JD i wstaw część całkowitą dla Z i część dziesiętną (część po przecinku) dla F. Zwróć uwagę, jeśli:

Z <2299161 to:

                     a = Z

Z> 2299161 następnie:

                     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)

Dzień liczony jest od:

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

Miesiąc:

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

Rok:

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

Uzyskuje się następujące wartości:

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

Od Z> 2299161 otrzymujemy teraz:

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

Wynik:

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

Data, której szukaliśmy to 1 stycznia 1990 roku

Określ dzień tygodnia

Odbywa się to za pomocą daty juliańskiej. Najpierw oblicz YD dla podanej daty, dodaj to przez 1,5 i podziel wynik przez 7. Pozostała część dzielenia ( modulo ) pokazuje dzień tygodnia:

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

Na przykładzie: 1 stycznia 1990

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

1 stycznia 1990 był poniedziałek .

Istniejące funkcje w systemach komputerowych

Takie konwersje dla przedziałów czasowych od kilkudziesięciu lat przed lub po teraźniejszości (początek XXI wieku) są przeprowadzane przez popularne komputerowe systemy operacyjne i środowiska wykonawcze (np. Jako funkcja mktime()dla C ++ i innych języków programowania ). W systemach uniksowych datę juliańską można obliczyć, dzieląc „sekundy od 01/01/1970 00:00 ( time_t)” przez 60 * 60 * 24 = 86400 i dodając stałą 2440587,5. Dlatego takie konwersje muszą być realizowane tylko w programach komputerowych dla szerszych zakresów czasowych lub na autonomicznych mikrokontrolerach (jeśli nie jest na nich dostępne pełne środowisko uruchomieniowe).

linki internetowe