バージョン10.0で,暦機能はWolfram言語に組み込まれた »

暦パッケージ

このパッケージは統合された基本的な暦操作の処理を提供する.暦を一般的な数体系として扱うことで,日,週,月,年が与えられたベースにある数を一般化したものであると考えられるようにするということが基本的概念である.

DayOfWeek[{year,month,day}]指定の日の曜日を返す
DaysBetween[{year1,month1,day1},{year2,month2,day2}]
指定された2つの日付の間の日数を返す
DaysPlus[{year,month,day},n]指定の日の n 日後の日付を返す

標準的な暦を用いた暦計算

パッケージをロードする.
基本的な暦の実用性は曜日を求めることである.
指定の2つの日付間の日数を求める.1900年は閏年ではない.
1901年1月2日は1900年1月1日の366日後である.
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]
cal1で与えられた日付を cal2での日付に変換する

指定の系を使った暦計算

グレゴリオ暦(新暦)は西洋世界において,ローマカトリックの国々では1582年以降,英語を母国語とする国々では1752年以降採用されている.グレゴリオ暦では,4の倍数の年を閏年とするが,100の倍数の年で400で割り切れない世紀末の年は閏年としない.

グレゴリオ暦以前に使われていた暦はユリウス暦(旧暦)である.ユリウス暦では4で割り切れる年を閏年とする.現時点では2つの暦の間には13日の差がある.2つの暦の間の切換えは,この日数を切り捨てることで行われたので,計算の際にこれを考慮する必要がある.

このパッケージのデフォルトの暦は,イギリスとかつてのその植民地(アメリカ合衆国など)で使われていたものである.つまり,1752年9月14日以降はグレゴリオ暦であるが,1752年9月2日まではユリウス暦である.暦システムを指定しない場合は,これがDayOfWeekDaysBetweenDaysPlusで用いられる暦である.

ユリウス暦は西暦4年3月1日以降は有効であるが,この年が閏年ではなかったため,それ以前は無効である.

イスラム暦はイスラム教の祝日を管理するために用いられている.これは完全な太陰暦であり,1年が354日または355日である.月は太陽暦とは一致せず,30年周期で太陽暦を移動する.イスラム暦はユリウス暦での622年7月16日のヘジラ(Hejira)から始まった.

ユリウス暦では,400で割り切れない世紀初めの年は閏年である.
グレゴリオ暦はユリウス暦より13日進んでいる.
イスラム暦に変換する.
イスラム暦の初日,つまりヘジラの日である.1582年以前はグレゴリオ暦は使われていなかったため,結果はユリウス暦で返される.
EasterSunday[year]イースターサンデーの日付をグレゴリオ暦で返す
EasterSundayGreekOrthodox[year]ギリシャ正教会によるイースターサンデーの日付をグレゴリオ暦で返す
JewishNewYear[year]グレゴリオ暦の1900年から2099年までの間のユダヤ教の元旦の日付を返す

祝日の日付

1945年のイースターサンデーは4月1日であった.
これはGregorian暦以前の日付の計算を使用するが,結果はGregorian暦の日付で返される.
以下はGregorian暦の1997年におけるユダヤ教の元旦の日付を返す.