Last modified: 2012-02-17
Julian day is the interval of time in days since January 1, 4713 BC Greenwich noon. It is convenient for calculating intervals between two historical dates.
To learn more about Julian day, read the page for Julian day on Wikipedia.
julianday.JD is the class for Julian day. Julian date for March 1, 2012 00:00:00 is 2455987.5 for instance. To represent this, you write:
>>> import julianday >>> jd1 = julianday.JD(2455987.5) >>> jd1 JD(2455987.5)
You can create JD instace from familiar calendar date and time format:
>>> jd2 = julianday.JD.from_calendar_datetime(2012, 4, 1, 0, 0, 0) >>> jd2 JD(2456018.5)
You can get calendar time tuple from the JD object like this:
>>> jd1.calendar_datetime() (2012, 3, 1, 0, 0, 0)
Adding / Subtracting JD value:
>>> jd2 - 3 JD(2456015.5) >>> (jd1 + 10).calendar_datetime() (2012, 3, 11, 0, 0, 0)
(You may find that JD objects are immutable.)
Subtracting JD object from another JD object returns interval time in days bitween them:
>>> jd2 - jd1 31.0
JD class treats historical calendar dates correctly. It knows both Julian and Gregorian calendar. You can pass the historical dates to the from_calendar_datetime() method as is and get right Julian date:
>>> jd3 = julianday.JD.from_calendar_datetime(1582, 10, 4) >>> jd3 JD(2299159.5) >>> jd3.weekday() 4 >>> (jd3 + 1).calendar_datetime() (1582, 10, 15, 0, 0, 0) >>> (jd3 + 1).weekday() 5
October 4, 1582 Thursday is the last day of Julian calendar. The next day is October 15, 1582 Friday in Gregorian calendar!
(Please do not confuse Julian calendar with Julian day; they are quite different ideas.)
ユリウス通日(Julian day)とは、紀元前4713年1月1日正午からの経過時間を日で表わしたものです。歴史上の2点の日付の間隔を計算するのに便利です。
詳しくは、ウィキペディアのユリウス通日のページを参照ください。
julianday.JD がユリウス通日のためのクラスです。たとえば、2012年3月1日00:00:00はユリウス通日で 2455987.5 にあたります。これは次のように書けます:
>>> import julianday >>> jd1 = julianday.JD(2455987.5) >>> jd1 JD(2455987.5)
もちろんなじみのある日付形式からも作れます:
>>> jd2 = julianday.JD.from_calendar_datetime(2012, 4, 1, 0, 0, 0) >>> jd2 JD(2456018.5)
ユリウス通日から日付と時刻のタプルを得るには次のようにします:
>>> jd1.calendar_datetime() (2012, 3, 1, 0, 0, 0)
JD オブジェクトの値を増減するには:
>>> jd2 - 3 JD(2456015.5) >>> (jd1 + 10).calendar_datetime() (2012, 3, 11, 0, 0, 0)
(JD オブジェクトが immutable ということにご注意を。)
JD オブジェクトから別の JD オブジェクトを減算すると、双方の時間の隔たりを日単位で返します:
>>> jd2 - jd1 31.0
JD クラスは歴史上の暦を適切に処理します。ユリウス暦、グレゴリウス暦の違いが考慮されます。from_calendar_datetime() メソッドには史料に記録されている日付をそのまま渡すことで、正しいユリウス通日が得られます:
>>> jd3 = julianday.JD.from_calendar_datetime(1582, 10, 4) >>> jd3 JD(2299159.5) >>> jd3.weekday() 4 >>> (jd3 + 1).calendar_datetime() (1582, 10, 15, 0, 0, 0) >>> (jd3 + 1).weekday() 5
1582年10月4日木曜日というのはユリウス暦が使われた最後の日です。その翌日はグレゴリオ暦で、1582年10月15日金曜日になるのです!
(ユリウス暦とユリウス通日とを混同しないようにしましょう、このふたつはまったく別のものです。)
Comments are always welcomed. You can keep in touch with me on my guestbook page or e-mail below.
Copyright (c) 2012 Masaaki Shibata <mshibata at emptypage.jp>