율리우스 적일(積日, Julian Date)을 계산하는 방법에 대해서 정리했다.  율리우스 적일은 천문계산의 기본이면서도 매우 중요한 개념이다.

 

율리우스 적일(Julian Date)은 다음과 같이 정의된다.

 

장소 : 영국 그리니치(Greenwich, 경도 0도) 기준
시점 : B.C. 4713년 1월 1월 세계시 12시
부터 세어진 날의 수

 

율리우스 적일(이하, JD)는 ‘어느 시점부터 몇 일째 되는 날’과 같이 날짜를 세는 방법이라고 생각하면 된다. 적일에서 ‘적(積)’자는 쌓을 적자이다. 즉 날짜를 쌓아간다는 의미이다. 한가지 더 고려해야할 것은 단순히 날짜만 세는 것이 아니라 소수점까지 포함한 시간까지 확장한다. 그러므로 JD는 날짜와 시간을 하나의 실수값으로 정의가 가능해진다.

 

JD가 천문학에서 많이 활용되는 이유는 천체의 운동을 기술하기 위해 시간을 편리하게 적용할 수 있기 때문이다. 일상 생활에서 사용하는 년월일,시분초는 인식하기 편하지만 계산을 위해서는 JD로 변환이 필요하게 된다.

 

JD은 Julian Days, Julian Day Numbers와 동일한 의미를 가지지만 Astronomical Algorithms 저자 Jean Meeus는 Julian Date대신 Julian Day로 사용할 것을 권면하고 있다. 왜냐하면 Date라는 용어는 달력에서 사용하는 년,월,일을 표기해야할 것 같은 느낌이 강하기 때문이라고 한다. 그러나 필자는 그러한 구분은 상관없다고 판단한다.

 

In many book we read “Julian Date” instead of “Julian Day”. A date consists of a year number, a month, adn a day of the month, in any calendar. For me, a Julian date is a date in the Julian calendar, just as a Gregorian date refers to the Gregorian calendar. The JD has nothing to do with the Julian calendar.

Astronomical Algorithms 2nd edition Chapter 7 에서 발췌

 

한가지 더 언급하자면 Jean Meeus도 지적했듯이 JD와 율리우스력(Julian Calendar), 그레고리력(Gregorian calendar)와 다르다는 점을 인식해야한다. JD는 날수(day number)이고 율리우스력이나 그레고리력은 달력이다. 이에 대해서는 다시 언급하겠다.

 

필자는 JDN(Julian Day Number)는 JD의 정수부분이라고 정의하겠다. 그러므로 1999년 1월 1일 0h UT는 JD로 2451179.5이고 JDN는 2451179이 된다.

 

시간(Time)

JD는 세계시(Universal Time, 이하 UT)를 기준으로 한다. JD와 UT와의 관계를 말하기에 앞서 잠깐 시간(Time)에 대해서 언급해 보는 것이 좋을 것 같다. 왜냐하면 시간의 변천 역사와 체계에 대한 이해가 선수되어야 천문 관련 계산에 도움이 되기 때문이다. 하지만 정확히 이해하기에는 쉽지 않다. 그래도 개념정도는 알아야 한다고 생각한다.

 

진태양시(True Solor Time)

태양일을 기준으로한 시간. 태양이 자오선상에 도달한 후 다시 도달할 때까지 걸리는 시간을 24시간으로 결정하는 시간체계이다. 지구의 궤도가 타원이고 자전주기가 변하기 때문에 매일매일 다른 시간체계를 가지게 된다. 과거 태양을 기반으로 시계를 만들었을때 사용했으며 오늘날에는 사용하지 않는다.

 

 

항성시(Sidereal Time)

별을 기준으로 하는 시간이다. 별이 자오선상에 도달한 후 다시 도달할 때까지 걸리는 시간으로 대략적으로 23시간 56분 4초 정도로 4분 정도 실제하루와 차이가 발생한다. 이렇게 차이가 발생하는 이유는 지구가 자전하면서도 공전하기 때문이다. 일상생활에서는 별보다는 태양이 우선이므로 항성시는 사용하지 않지만 천문계산을 위해서는 꼭 필요한 시간체계이다.

 

 

평균태양시(Mean Solar Time, 이하 MST)

1초는 평균태양일(Mean Solar Day)의 1/86400 간격으로 정의되었다. 평균이라는 단어가 생긴것은 실제 태양이 자오선에서 다시 자오선에 오는데 걸리는 시간이 계절에 따라 빠르게는 16분 느리게는 14분까지 주기가 변하기 때문에 실제 태양의 운동으로 재는 시간은 오차를 없애고자 사용한 것이다. 이러한 오차는 지구의 자전축의 기울기와 지구의 공전궤도가 타원형이라는 것에서 기인한다. 이 오차를 균시차(equation of time)이라 불리고 “균시차 = 진태양시 – 평균태양시” 관계를 가진다.


평균태양일은 지구의 자전속도가 느려지는 것을 보정해주지 못한다.

 

MST는 1956년 이전까지 사용했던 시간이다.

 

 

세계시(Universal Time, 이하 UT)

UT는 전세계적으로 통용될 수 있는 시간의 필요성에 따라 만들어진 시간체계이다. UT는 그리니치(경오 0도)상에서 자오선에 대한 평균태양시(MST)이다.  그리니치 평균태양시(Greenwich Mean Time, 이하 GMT)와 UT는 정확하게 같지 않다. 원래 GMT는 자정이 아닌 정오에 시작하도록 만든 시간이다. 1925년 1월 1일에 GMT를 12시간 앞당겨 자정으로 시작하는 것을 제정했고 1928년 이전 GMT와 새로운 GMT의 용어의 혼란을 피하기 위해 만들어진 것이 바로 UT이다. 오늘날에는 GMT와 UT는 같은 의미로 통용되지만 천문학에서는 사용하지 않는다.

 

UT는 10분의 수초에 정밀도를 요하는 경우 UT0, UT1, UT2로 세부적으로 구분하여 사용하게 된다.

 

  • UT0 :  가장 기본적인 UT로 별의 자오선 통과를 광학적으로 측정하여 구한 UT. 현대적인 방법으로는 GPS를 이용한다. 이것은 실제 UT로 통용되지는 않는다.
  • UT1 : UT0를 보정한 UT로 지구의 자전축의 운동(극운동) 때문에 생기는 자오선의 변화에 대한 보정을 가한 UT이다. 일반적으로 UT라고 하면 UT1을 의미한다. 오늘날 UT라고 하면 UT1을 의미한다.
  • UT2 : UT1에서 지구의 계절별 자전율 변화에 의해서 일어나는 작은 불규칙성 보정한 UT. UT2는 10-7의 상대오차를 가진다. UT1과 UT2의 관계는 다음과 같다.
    UT2 - UT1 = 0.022 * sin(2*pi*t) - 0.017 * cos(2*pi*t)
    - 0.007 * sin(4*pi*t) + 0.006 * cos(4*pi*t)
    t = 2000.0 + (MJD - 51544.03) / 365.2422
    pi = 3.14159265...여기서 UT1은 초단위이고 t는 Besselian Date값, 그리고 MJD는 Modified Julian Date(Julian Date-2400000.5)이다.

 

UT와 GMT에 대한 더 자세한 내용은 아래 링크를 참고한다.

 

 

UT를 다른지역의 시간대로 변경할 수 있다. 가령 한국표준시(Korean Standard Time, 이하 KST)는 UT보다 9h이 빠르다. 그러므로 다음과 같은 관계가 성립한다.

 

  • UT = KST – 9h

 

표준시(Standard Time)은 일상적으로 사용할 수 있도록 시간대를 형성해주는 반면 지방시(Local Time)는 경도에 따라서 달라진다.

 

 

동적시(Dynamical Time,이하 DT )

DT의 역사는 역표시(Ephemeris Time, 이하 ET)로 부터 시작한다.

 

ET는 1900년 1월 0일 12시 태양년의 1/31556925.9747을 1초로 삼는 시간체계이다. 그러므로 이 ET는 매우 정확한 비율로 계산되는 시간체계가 된다.

 

MST기반인 UT의 경우 평균값을 이용하기 때문에 달과 태양에 의해 일어나는 조석마찰로 인해 느려지는 지구의 자전주기와 유동성을 갖고 있는 지구 내부 물질의 움직임에 의해 자전의 속도가 달라지는 현상에 의해 지구를 기준으로하는 실제 시간은 느려진다는 것을 발견하게 되었다. 아래는 1973년부터 2008년까지 지구 자전의 주기의 변화를 보여주고 있다.

 

1956년에 국제도량형위원회(CIPM)은 지구자전대신 지구의 공전을 기초로 하는 ET를 시간의 표준으로 결정하게 된다. 이것은 달, 행성, 우주의 다른 태양계 천체들의 운동에 대해 기술할때 사용된다.

 

지구 공전으로 기준삼은 ET는 지구 자전으로 기준삼는 UT와 시간차이가 멀어지기 시작했다. 1902년 이후 2000년에 UT와 ET는 63초 이상 차이가 벌어졌다.

 

ET는 1960년에서 1983년까지 사용했다. 지구공전기반의 ET는 1984년에 원자시계 기반인 지구동적시(Terrestial Dynamic Time:TDT)로 대체되었다. 더불어 태양계의 질량중심과 관련된 Barycentric Dynamical Time(TDB)도 사용되었다. TDB와 TDT의 차이점은 태양계의 질량중심을 기준으로 한다는 것 외에는 같으며 0.0017초 차이 정도난다. TDT는 2001년에 지구시(Terrestial Time,TT)로 용어가 변경된다. 일반적으로 TT(TDT)와 TDB는 거의 차이가 없기 때문에 구분하지 않지만 20 microseconds보다 더 작은 정확도를 가지는 행성의 위치를 계산해야하는 경우 TDB를 사용한다.

 

참고로 TDT는 TAI(국제원자시)와 아래와 같은 관계가 성립된다.

 

TDT = TAI + 32.184 = UTC + (윤초수, 2009년까지 34초) + 32.184

 

TDB는 아래와 같은 공식이 성립한다.

TDB = TDT + 0.001658 sin( g ) + 0.000014 sin( 2g ) seconds
g = 357.53 + 0.9856003 ( JD - 2451545.0 ) degrees
JD는 Julian Date이고, g는 지구의 mean anomaly이다.

 

만약 짧은 시간의 정확성이 중요하다면 UT와 ET의 차이값을 알아야한다. 이값은 ΔT로 표기되며 다음과 같은 공식을 가진다.

 

ΔT = ET – UT (1984년 이전), TDT – UT(1984년~2000년), TT - UT(2001년부터)

 

ΔT는 아래와 같이 변한다.

  • ΔT = +65초 (2000년)
  • ΔT = +69초 (2005년)
  • ΔT = +80초 (2015년)

 

ΔT는 다음식으로도 유도가 가능하다.

ΔT = 32.184 + (TAI-UTC) - (UT1-UTC)

 

TAI-UTC은 해당년도까지 적용된 윤초이다. 이에 대한 자료는 [여기]를 참고한다.


UT1-UTC는 세계시와 세계협정시 차이값이다. 이들 값에 대해서는 다음에 설명하는 세계협정시(UTC)를 보길 바란다.

 

ΔT는 지구의 운동으로 인해 아주 정확하게 예측하는 것은 불가능하다. 결국 과거의 자료를 토대로 예측하는 방법을 쓸 수 밖에 없다. 아래 사이트에는 ΔT를 계산하는 c코드가 공개되어 있다. dltat.c 를 참고한다.

 

ET에 대한 더욱 자세한 내용은 다음 글을 참고한다.

 

 

 

국제원자시(International Atomic Time, 이하 TAI)

지구의 운동 기반이 아닌 세슘원자시계를 기반으로한 국제표준이다. TAI에서 1초는 세슘원자가 2개의 초미세구조 사이에서 전이할때 복사 또는 흡수하는 전기에너지 주기의 9,192,631,770배와 동일한 시간으로 정의한다.  TAI의 원점은 1958년 1월 1일 0h UT2로 한다. TAI는 원자시계를 기반으로 하므로 매우 정밀하다. 실생활에는 쓰이는 시간체계는 아니지만 과학적 용도로 쓰기에 적합하다. 실생활에 사용하는 시간은 아래에서 설명하는 세계협정시(UTC)이다.

 

1987년 12월 31일까지 국제시보국(BIH)에서 TAI, UTC, 지구자전요소 계산 업무를 했고, 1988년 1월 1일부터는 국제도량형국(BIPM)의 Time Section에서 TAI, UTC 결정업무를 맞고 지구자전요소 결정 및 윤초의 결정 통보는 국제지구자전연구부(IERS)에서 담당하게 되었다.

 

 

 

세계협정시(Coordinated Universal Time, 이하 UTC)

오늘날에는 일상생활에 UTC을 국제표준으로 삼고 있다. UTC는 TAI기반으로 UT1과 0.9초 내로 차이가 나도록 윤초(leap second) 개념을 도입한 것이다. 즉 TAI는 현재 가장 정확한 시간체계이고 UTC는 그 정확한 시간에 지구자전도 고려한 시간인 것이다.

 

윤초는 1972년부터 국제시보국(BIH)에서 최초로 도입했고 1988년 1월 1일 부터는 국제지구자전연구부(IERS)에서 지구자전요소의 결정 및 윤초의 결정과 통보업무를 담당하고 있다.

 

매월 말에 윤초를 넣을 수 있지만 6월 말, 12월 말에 더하거나 빼는 것만으로도 충분하다.

아래 그림은 UT1과 UTC의 차이를 보여주고 있는 그래프이다. (출처:위키피디아)


UT1과 UTC가 0.9초 내로 조정되는 것을 확인하자.



참고로 UT1-UTC는 ΔUT 로 표현한다. 예언되는 ΔUT를 DUT로 쓰여진다.

 

UT1 = UTC + DUT1

 

위 식에서 DUT1은 IERS Bulletin A를 참고하여 예상이 가능하다. 2009년 DUT1은 다음과 같이 계산한다.

DUT1 = UT1-UTC =   0.3597 -  0.00093 (MJD - 54924) - (UT2-UT1)

 

여기에서 UT2-UT1은 UT설명시 나왔던 값이므로 계산후 그대로 대입하면 되겠다.

[여기]에 DUT1 예상 결과가 잘 나와 있다.

 

아래는 TAI와 UTC의 관계식이다.

 

윤초(leap second) = TAI – UTC

 

1972년에 윤초를 10초를 더한 것을 시작으로 2009년 까지 양의 윤초만 적용하여 위 공식에 의하면 윤초는 2009년 현재 34초가 된다.

 

 

위 관계를 표로 나타내는 것은 다음 링크를 보자.

 

아래 링크를 통해 UTC와 윤초에 대해서 더욱 공부할 수 있겠다.

 

GPS 시간(GPST)

GPS는 1980년 6월 1일 UTC가 TAI와 19초 차이나는 시점부터 적용했다. TAI와 같은 원자시계를 기반으로 하며 UTC처럼 윤초를 더하지 않는다.

 

시간 관계 (Time Relationships)

 

위 그림은 지금까지 설명한 시간관계를 하나의 그래프로 보여주고 있다.

 

 

Julian Date(JD)와 Julian Ephemeris Date(JDE)

JD는 UT를 기반으로 한다고 언급했었다. 하지만 JDE는 ET(TT,TDT)를 기반으로 한다. UT는 지구의 운동에 따라 계산되어 실제로는 명확하지 않지만 일상생활에서는 가장 적합하다. 하지만 ET의 경우 원자시계를 기반으로 한다. 앞서 ΔT = TDT(or ET) – UT 를 언급했다. 실제로 2015년에는 +80초가 된다. 그러므로 JD와 JDE는 구분되어 생각해야한다.

 

  • 1977년 4월 26.4일 UT = JD 2443259.9 = JD 2443259.9 UT
  • 1977년 4월 26.4일 ET = JDE 2443259.9 = JD 2443259.9 ET

 

위는 다른 값이라는 것을 항상 생각하자.

 

그레고리력(Gregorian Calendar)과 율리우스력(Julian Calendar)

율리우스력은 해당 년도가 4로 나누어 떨어지는 경우 365일이 아닌 366일을 1년으로 삼는 달력이다. 이렇게 하루를 포함하는 해를 윤년(Leap Year)이라고 한다. 이런 윤년이 발생하는 이유는 일년이 딱 365일이 아니기 때문이다. 율리우스력에서 1년은 365.25일이다. 그러므로 4년이 흐르면 1일이 차이가 나게 되어 있다. 이것을 보정하기 위해 만든 것이 윤년인 것이다.

 

가령, 900년 1236년의 경우 4로 나눠어지므로 윤년이고 750년 1429년은 보통해이다.

 

율리우스력은 1582년 10월 4일까지 사용되어졌다.

 

그레고리력은 기본적으로 율리우스력과 비슷하게 4년마다 윤년이 있다. 대신 4로 나눠떨어지지만 400으로 나눠떨어지지 않는 해는 윤년이 아닌 보통해로 생각한다. 이 달력은 오늘날 사용하고 있다.

 

가령, 1700년, 1800년, 1900년은 4로 나눠지지만 400으로 나눠지지 않으므로 보통해이다. 반면 1600년, 2000년, 2400년은 4로 나눠지면서 400으로 나눠 떨어지므로 윤년이 된다.

 

그레고리력은 율리우스력과 다르게 1년을 365.2425일로 본다.

 

그레고리력은 1582년 10월 15일부터 사용하기 시작했다. 여기서 율리우스력의 마지막 날과 그레고리력의 시작일에 비어 있다. 1582년 10월 5일에 그레고리력을 사용하기 시작하면서 그 다음날을 1582년 10월 15일로 만들었기 때문이다. 이렇게 된데에는 율리우스력이 역법상 오차가 있었기 때문인데, 당시 춘분점이 3월 21일이어야하는데 율리우스력에 의하면 3월 11일로 무려 10일이나 차이가 났기 때문이다. 율리우스력이 1년을 365.25로 해서 그것이 누적되어 원래 시간보다 더 빨리 계수되는 달력이였기 때문에 이것을 극복하고자 1년을 더 정확한 365.2425일로 수정하고 이에 맞는 그레고리력을 사용하게 된 것이다.

 

한국의 경우 조선시대에 1895년 을미개혁 때인 양력 1896년 1월 1일(건양 원년)부터 그레고리력을 처음 사용하게 되었다.

 

날짜로 부터 Julian Date 계산

JD는 앞서 설명한대로 4713년 B.C.부터 계수한 날 수이다. JD는 또한 경도 0도를 기준으로하는 UT를 기반으로 하기 때문에 천문계산에 시간의 척도로서 적합하다. “언제 목성이 어디에 있었나”를 질문할 때 “언제”가 명확하기 때문이다.

 

UT에 해당하는 날짜가 주어졌을 때 JD를 계산하는 방법에 대해서 생각해보자.

 

  1. Y는 해당년도, M는 월(1월=1,2월=2), D는 해당 월의 날짜이다. D는 시간값도 포함한 소수값으로 생각하자. 가령 3일 12시 UT라면 D=3.5이다.
  2. M>2인 경우 Y,M은 변경하지 않는다.
    M = 1 또는 2인 경우 Y=Y-1, M=M+12로 계산한다.
  3. 그레고리력(Gregorian Calendar)의 경우 아래처럼 계산한다.
    A = INT(Y/100), B = 2 – A + INT(A/4)
    여기서 INT는 ()안에 들어간 값을 넘지않는 가장 큰 정수이다.
    율리우스력(Julian Calendar)의 경우 B=0이다.
  4. JD는 다음과 같이 계산된다.
    JD = INT(365.25(Y+4716)) + INT(30.6001(M+1)) + D + B – 1524.5
    여기서 30.6001은 정확히는 30.6을 써야한다. 하지만 컴퓨터 계산시 10.6이여 하는데 10.599999999 이런식으로 표현되는 경우가 발생하면 INT(10.6)과 INT(10.5999..)의 결과가 달라진다. 이 문제 대해 대처하기 위해 30.6001을 사용한 것이다. 이러한 에러를 Round-off Error라고 불린다.

 

계산시 중요한 점은 B.C.(기원전)에 대한 처리이다. 1년 B.C. 다음 해는 1년 A.D.이다. 0년 A.D.가 없기 때문에 이것은 계산하는 사람으로 하여금 혼동을 주게 된다. 그래서 위 계산식에서 Y값을 정할때 B.C.값의 경우 –(B.C.값)+1 로 처리한다. 가령, 585 B.C.는 -584이다. 참고로 –582 B.C. 처럼 B.C.에 –를 사용하지 말자. 잘못된 표기이다.

 

그러므로 기원전 4713년 1월 1일 12UT부터 JD가 시작하므로 Y=-4712, M=1, D=1.5 를 계산식에 넣으면 값은 0이 떨어지게 되어 있다.

 

만약 1582년 10월 5일부터 1582년 10월 14일에 해당하는 값을 가지고 계산하려는 경우는 막아야한다. 앞서 설명했지만 율리우스력은 1582년 10월 4일까지이고 그레고리력은 1582년 10월 15일 부터이여서 그 사이 날짜는 실제로 없기 때문이다.

 

만약 주어진 해의 1월 0.0일(=이전해 12월 31.0일)의 JD를 계산하려면 다음식을 이용한다. 단 그레고리력일때만 된다.

 

Y = year – 1

A = INT( Y / 100 )

JD0 = INT(365.25Y) – A + INT(A/4) + 1721424.5

 

위 조건에서 1901년부터 2099년까지만 고려한다면 다음식을 사용한다.

JD0 = 1721409.5 + INT(365.25 x (year-1) )

 

Julian Date로부터 날짜 계산

여기서 언급하는 JD가 음수값일때는 적용할 수 없다.

  1. JD + 0.5의 정수부분은 Z, 소수점 이하 부분은 F로 지정한다.
  2. A값 계산
    Z < 2299161이면 A=Z 이다.
    Z >= 2299161 이면 다음식을 적용
    alpha = INT( (Z – 1867216.25)/36524.25)
    A = Z + 1 + alpha – INt( alpha/4 )
  3. B,C,D,E 결정
    B = A + 1524
    C = INT( (B –122.1) / 365.25 )
    D = INT( 365.25 C )
    E = INT( (B – D)/30.6001 )
  4. 일(day) 계산
    day = B – D – INT(30.6001 E ) + F
  5. 월(month) 계산
    E < 14일 경우 month = E – 1
    E = 14 또는 15일 경우 month = E - 13
  6. 년(year) 계산
    month>2일 경우 year = C-4716
    month=1,2일 경우 year = C-4715

 

위에서 30.6001대신 30.6을 쓰면 컴퓨터 계산이 오류가 있을 수 있다. day의 소수점 이하값은 시간을 뜻한다. 소수점값만 취해서 24를 곱하면 시간이 되겠다.

 

Julian Date와 날짜와의 관계표

아래 관계값은 계산시 비교해볼 수 있도록 하기 위해 적는다.

  • 2000년 1월 1.5일 = JD 2451545.0
  • 1999년 1월 1.0일 = JD 2451179.5
  • 1988년 1월 27.0일 = JD 2447187.5
  • 1600년 12월 31.0일 = JD 2305812.5
  • 837년 4월 10.3일 = JD 2026871.8
  • -123년 12월 31.0일 = JD 1676496.5
  • -1001년 8월 17.9일 = JD 1355671.4
  • -4712년 1월 1.5일 = JD 0.0

 

Modified Julian Date(MJD)

JD은 너무 큰 숫자이다. 또한 JD는 하루의 시작이 정오이다. 그래서 1858년 11월 17일 0h UT를 기준으로 하는 JD를 따로 지정했는데 MJD이다.

MJD는 다음과 같이 계산한다.

MJD = JD – 2400000.5

 

시간간격 계산

헬리혜성은 근일점(perihelion)을 1910년 4월 20일에 도달한 후 1986년 2월 9일에 다시 도달했다. 이 날짜동안의 날수를 어떻게 계산할 것인가? JD를 이용하면 아주 쉽게 계산이 가능하다.

 

1910년 4월 20.0일 =  JD 2418781.5
1986년 2월 9.0일 = JD 2446470.5
차이는 27689일이다.

요일 계산하기

1954년 6월 30일 무슨 요일일까? 계산이 어려울 것 같지만 JD를 이용하면 매우 쉽게 계산이 가능해진다. JD는 월요일부터 시작한다. 단순하게 아래 계산식대로 하면 요일을 쉽게 계산할 수 있다.

(JD + 1.5) % 7 (%은 나머지를 계산하는 식이다.)

결과값이 0이면 일요일, 1이면 월요일 6이면 토요일이된다.

1954년 6월 30일에 대응하는 JD는 2434923.5이다. 1.5를 더하면 2434925이므로 7로 나누면 3이 나온다. 결과는 수요일이다.

 

참고글

 

참고서적

  • Astronomical Algorithms 2nd, Jean Meeus

+ Recent posts