暦パッケージ
このパッケージは統合された基本的な暦操作の処理を提供する.暦を一般的な数体系として扱うことで,日,週,月,年が与えられたベースにある数を一般化したものであると考えられるようにするということが基本的概念である.
| DayOfWeek[{year,month,day}] | 指定の日の曜日を返す |
| DaysBetween[{year1,month1,day1},{year2,month2,day2}] |
| 指定された2つの日付の間の日数を返す |
| DaysPlus[{year,month,day},n] | 指定の日の n 日後の日付を返す |
標準的な暦を用いた暦計算
| Out[2]= |  |
指定の2つの日付間の日数を求める.1900年は閏年ではない.
| Out[3]= |  |
1901年1月2日は1900年1月1日の

日後である.
| Out[4]= |  |
| DayOfWeek[{year,month,day},Calendar->cal] |
| 暦 cal を使って指定日の曜日を返す |
| DaysBetween[{year1,month1,day1},{year2,month2,day2},Calendar->cal] |
| 暦 cal を使って指定の2つの日付の間の日数を返す |
| DaysPlus[{year,month,day},n,Calendar->cal] |
| 暦 cal を使って指定日の n 日後の日付を返す |
| CalendarChange[{year,month,day}, cal1,cal2] |
| で与えられた日付を での日付に変換する |
指定の系を使った暦計算
グレゴリオ暦(新暦)は西洋世界において,ローマカトリックの国々では1582年以降,英語を母国語とする国々では1752年以降採用されている.グレゴリオ暦では,4の倍数の年を閏年とするが,100の倍数の年で400で割り切れない世紀末の年は閏年としない.
グレゴリオ暦以前に使われていた暦はユリウス暦(旧暦)である.ユリウス暦では4で割り切れる年を閏年とする.現時点では2つの暦の間には13日の差がある.2つの暦の間の切換えは,この日数を切り捨てることで行われたので,計算の際にこれを考慮する必要がある.
このパッケージのデフォルトの暦は,イギリスとかつてのその植民地(アメリカ合衆国など)で使われていたものである.つまり,1752年9月14日以降はグレゴリオ暦であるが,1752年9月2日まではユリウス暦である.暦システムを指定しない場合は,これがDayOfWeek,DaysBetween,DaysPlusで用いられる暦である.
ユリウス暦は西暦4年3月1日以降は有効であるが,この年が閏年ではなかったため,それ以前は無効である.
イスラム暦はイスラム教の祝日を管理するために用いられている.これは完全な太陰暦であり,1年が354日または355日である.月は太陽暦とは一致せず,30年周期で太陽暦を移動する.イスラム暦はユリウス暦での622年7月16日のヘジラ(Hejira)から始まった.
ユリウス暦では,400で割り切れない世紀初めの年は閏年である.
| Out[5]= |  |
| Out[6]= |  |
| Out[7]= |  |
イスラム暦の初日,つまりヘジラの日である.1582年以前はグレゴリオ暦は使われていなかったため,結果はユリウス暦で返される.
| Out[8]= |  |
祝日の日付
1945年のイースターサンデーは4月1日であった.
| Out[9]= |  |
| Out[10]= |  |
| Out[11]= |  |