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
- Kalkulator kalendarza w języku niemieckim
- Konwersja kalendarza na angielski ( John Walker )