julianday

Download

Last modified: 2012-02-17

Python module for Julian day

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 class

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.)

Python ユリウス通日モジュール

ユリウス通日(Julian day)とは、紀元前4713年1月1日正午からの経過時間を日で表わしたものです。歴史上の2点の日付の間隔を計算するのに便利です。

詳しくは、ウィキペディアのユリウス通日のページを参照ください。

julianday.JD クラス

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日金曜日になるのです!

(ユリウス暦とユリウス通日とを混同しないようにしましょう、このふたつはまったく別のものです。)

History

1.1b1 (2012-02-17)
Renamed JD.timetuple() method JD.calendar_datetime().
Renamed JD.from_timetuple() method JD.from_calendar_datetime().
Renamed JD.day_of_week() method JD.weekday().
Added CJD (chronological Julian date) support; create_cjd_class() factory function and CJD class it returns.
1.0 (2012-02-15)
First release.