[14] [DFN[暦法]]は、[[年月日]]を構成する規則とその運用履歴です。
[[人間社会]]の根本を担う[[システム]]であり、
[[人類]]の[[歴史]]の中で様々な[[暦法]]が考案され、利用されてきました。
広義の[[暦]]の中核をなすものです。


* 暦法の構成要素

[10] 
[FIG(short list)[
- [[暦年代]]
- [[紀年法]]
- [[元期]]
- [[三正]]
-[[祝日]]・[[休日]]
- [[二十四節気]]
- [[日界]]
-[[時間帯]]
- [[日付形式]]
- [[営業日]]

]FIG]

* 色々な暦法

[9] 
[FIG(list short)[
- [[太陽暦]]
- [[太陰太陽暦]]
- [[太陰暦]]
- [[エチオピア暦]]
- [[ブータン暦]]
- [[ヴィクラム暦]]
- [[ベンガル暦]]
- [[ビルマ暦]]
- [[バーブ暦]]
- [[ヤズデギルド暦]]
- [[ダリアン暦]]
- [[ビクラム暦]]
- [[シャハカ暦]]
- [[ネパール暦]]
- [[マンデーブ暦]]
- [[ラクシュマン・セーン暦]]
- [[金光暦]]
- [[真那暦]]
- [[傈僳暦]]
- [[イラーヒー暦]]
- [[長期暦]]
- [[和暦]]
- [[統一教会暦]]
- [[羌暦]]
- [[カレン暦]]
- [[太平天暦]]
- [[アイヌ暦]]
- [[タミル暦]]
- [[BP]]
- [[戦後暦]]
- [[共産主義の日時]]
- [[ゾロアスター暦]]
- [[ボスポロス暦]]
- [[ケルト暦]]
- [[バハーイー暦]]
- [[Yerm Lunar Calendar]]
- [[テンガナン暦]]
- [[Templar calendar]]
- [[ジャラール暦]]
- [[地球暦][地球暦 (atsucnn)]]
- [[天暦][天學教]]
- [[オベリ・オカイメ文字]]
- [[インカ暦]]
- [[スワヒリ暦]]

]FIG]


[8] [[紀年法]]、[[フィクションの暦法]]も参照。

* 法令

[SEE[ [[法定暦法]] ]]

* プロトコル

[12] [[計算機システムにおける暦の指定]]を参照。

* ISO 19108 モデル

[20] [[ISO 19108]] における[DFN[[RUBYB[[[暦][暦 (ISO 19108)]]][calendar]]]]すなわち
[DFN[[CODE[TM_Calendar]]]] は、
[[日]]単位の[[時間位置]]を定義する離散的[[時間参照系]]です
[SRC[>>19]]。

[30] [CODE[TM_ReferenceSystem]] を[[継承]]しています。

[22] 次の関係を持ちます。 [SRC[>>19 5.3.2.3]]

[FIG(list members)[ [23] [CODE[TM_Calendar]]

: [DFN[[F[referenceFrame]]]] :
[[日付]]を割り当てるため参照する [CODE[TM_CalendarEra]]。
(関係 Basis、1個以上)
: [DFN[[F[timeBasic]]]] :
最小の[[時間間隔]]の間の時点を特定するため使う [CODE[TM_Clock]]。
(関係 Resolution、高々1個)

]FIG]

[21] 次の操作を利用可能としなければなりません。 [SRC[>>19 5.3.2.3]]

- [25] [DFN[[CODE[dateTrans]]]] は、
[[日付]] [CODE[TM_CalDate]] と[[時刻]] [CODE[TM_ClockTime]]
を引数として受け取り、
相当する[[ユリウス日]] [CODE[JulianDate]] を返します。
- [26] [DFN[[CODE[julTrans]]]] は、
[[ユリウス日]] [CODE[JulianDate]] を引数として受け取り、
本 [CODE[TM_Calendar]] において相当する[[日付]] [CODE[TM_CalDate]]
を返します。

[24] [[グレゴリオ暦]]、[[和暦]]などいろいろな[[暦法]]を記述するために使うことができます。
附属書D ([[参考]]) に次の[[暦法]]の記述例が示されています
[SRC[>>19 D]]。

- [[ユリウス暦]]
- [[和暦]] ([[明治改暦]]以後)
- [[バビロン暦]] (うち10年分のみ)
- [[GPS暦]] ([[日]]以上のみ)

[27] [[暦][暦 (ISO 19108)]]は、
[[年]]、[[月]]、[[日]]などの要素の集まりで[[暦日]]を構成するための規則の集合を規定するものです。
[SRC[>>19 5.3.2.1]]
「典型的な暦」 [SRC[>>19 D.1, 附属書D表1]]
の内部構造は次のようであると説明されています。すなわち、

- [[Calendar][TM_Calendar]]
- [[Calendar Year]]
- [[Calendar Month]]
- [[Calendar Day]]

... のような階層的な構造を持ち、下位の構造は1つ以上の[[実現値]]を持ち、
名称や順序数が一巡すると上位の構造の[[時間間隔]]となります。
[[年]]と[[日]]はほとんどの暦にあり、
[[月]]については他の構造があるかもしれません。
その他の構造や、並列の別の構造があるかもしれません。
[[Calendar][TM_Calendar]] - [[Calendar Year]]
構造と並列に [[Calendar Era]] もあります。
各[[時間間隔]]は複数の[[天体]]の[[周期]]を基準に決められますが、
互いに整数倍とならないため複雑化しており、
両者の同期のために[[閏]]が挿入されます。
更に詳しく見ると:

- [31] [[日]]は、すべての[[暦]]の基本的な[[時間間隔]]です。
-- 通常[[地球]]か[[地軸]]を一周する[[周期]]にほぼ一致します。
-- 他の[[時間間隔]]は、[[日]]の整数倍とします。
-- 多くの[[暦]]では、[[月]]内の順序数で示します。
- [32] [[暦年]]は、[[地球]]の[[太陽]]を[[公転]]する[[周期]]にほぼ一致します。
-- 多くの[[暦]]では、長期的な平均の長さが公転周期と等しくなるよう、
長さが変動させることを許しています。
--- 多くの[[暦]]では、[[補助的][閏]]な[[月]]や[[日]]を周期的に挿入します。
--- 多くの古代の[[暦]]では、[[閏]]の挿入は政治的または宗教的な権威により不規則に行われました。
- [33] [[月]]は、[[年]]を構成します。
-- [[年]]は[[月]]の列であり、[[月]]の名称や長さは規則に従い変動します。
-- [[閏]]は、[[年]]番号から規則的に決定されます。
-- [[月][月 (天体)]]の満ち欠けや[[地球]]の[[公転]]の循環周期とほぼ一致します。
--- 多くの古代の[[暦]]では、長さは天体観測により決定されました。
--- [[暦]]によっては平均の長さが循環周期と等しくなるように長さを制限しています。
--- [[暦]]によっては循環周期と同調していません。
- [34] 多くの[[暦]]は、数日の[[時間間隔]]を持ちます。
-- [[グレゴリオ暦]]などでは、[[週]]を7日としています。
-- 祭日の曜日を固定するなどの目的で[[閏]]規則が複雑化することがあります。
- [35] [[暦年代][暦年代 (ISO 19108)]]は、
神話的または歴史的な[[事象]]による参照日から相対的に数える[[年]]の列です。
-- すべての[[暦]]は1つ以上の[[暦年代][暦年代 (ISO 19108)]]に関係づけられています。
-- [[暦]]には2種類あります。
--- 一方は、特定の[[事象]]から相対的に[[年]]を数えるもので、
1つか2つの[[暦年代][暦年代 (ISO 19108)]]を持ちます。
---- [[グレゴリオ暦]]がそうです。
---- [[ユリウス暦]]のように[[事象]]が変更されることもあります。
--- 他方は、複数の[[事象]]を使うものです。
---- [[治世年代法]]が広く用いられています。

[28] [[暦年代][暦年代 (ISO 19108)]]の基準となる[[事象]]の時期すなわち[[元期]]は 
[CODE[referenceFrame]] で参照される各 [CODE[TM_CalendarEra]]
により記述されます。[[暦法]]における[[日付]]は、提供される両操作によって[[ユリウス日]]と相互変換できます。
この変換の具体的な方法は定められておらず、
[[元期]]とその適用[[期間][期間 (ISO 19108)]]以外の変換に必要な内部構造の情報にアクセスする手段も用意されていません。
記述された[[暦法]]を不透明な値ではなく何らかの形で利用したいときは、
[[暦法]]ごとの処理を実装する必要があります。

[36] [CODE[TM_Calendar]] は[[ユリウス日]]との[[変換][暦の換算]]手段が存在することを要求しています。
[[JIS X 7108]] は[[バビロン暦]]のように正確な対応関係が知られていないものに[[ユリウス日]]の近似値を用いる例を示しています。
換算アルゴリズムの正確度の情報を含める必要がある [SRC[>>19 D.2]]
とされていますが、 [CODE[TM_Calendar]] やその演算で機械的に正確度を判断する手段は用意されていません。

[29] [[暦][暦 (ISO 19108)]]より細かい[[時刻]]を扱うには、
[[時計][時計 (ISO 19108)]]を併用します。

[FIG(quote)[
[FIGCAPTION[
[19] [[JIS X 7108:2004]] 4.1.1
]FIGCAPTION]

>
:暦 (calendar):
一日をその分解能とする[[時間位置]]を定義するための基礎となる離散的な[[時間参照系]]の一つ。
]FIG]

* 暦 (OWL-Time)

[38] 
[[OWL-Time]] 
は、
[DFN[[RUBYB[暦][calendar]]]]は [[clock][clock (OWL-Time)]] のカウントを実用的な日常の日時であって[[天体]]の移動に関係するもの
([[日]], [[月]], [[年]])
に変換できるようにする[[アルゴリズム]]の[[集合]]
[SRC[>>37]]
としています。
[[閏]]の一般の扱いは対象外とする [SRC[>>37]] としています。

[39] [[OWL-Time]] の[[時間参照系]]関連用語には [[ISO 19108]]
の影を感じますが、
[[暦][暦 (OWL-Time)]]だけ若干毛色が違っていて、
[[日付]]でなく[[時刻]]まで組み込まれている感が多少あります (が曖昧です)。
[SEE[ [[時間参照系]] ]]

[REFS[
- [37] [CITE@en[Time Ontology in OWL]] ([TIME[2019-06-05 22:23:30 +09:00]]) <https://w3c.github.io/sdw/time/#trs-clock-calendar>
]REFS]

* 研究

[SEE[ [[日時制度研究]] ]]

* その他

[FIG(list short)[
- [[月遅れ]]
- [[暦の換算]]
- [[カウントダウン暦]]
]FIG]

* 文献

[REFS[
- [17] [CITE[暦法及時法]], [[平山清次]]
]REFS]

[18] [[大正時代]]と古い[[本]]ですが、全文が [[Google Books]]
で公開されています。
[[昭和時代]]以降の研究成果が取り入れられていないものの、
当時日本最高峰の[[天文学者]]によって著された、
[[日本語]]で[[暦法]]を総合的に知ることができる優れた書籍です。

* 関連

[11] [[暦]]も参照。

* メモ

[4] [CITE@ja[暦法 - Wikipedia]] ([TIME[2015-05-02 22:13:58 +09:00]] 版) <http://ja.wikipedia.org/wiki/%E6%9A%A6%E6%B3%95>

[5] [CITE@en[RFC 7529 - Non-Gregorian Recurrence Rules in the Internet Calendaring and Scheduling Core Object Specification (iCalendar)]] ([TIME[2015-05-02 05:59:07 +09:00]] 版) <https://tools.ietf.org/html/rfc7529>

[FIG(amazon)[
暦
]FIG]

-programming and calender <http://www.funaba.org/en/programming-and-calendar.html>
-暦法・紀年法のページ <http://member.nifty.ne.jp/abayama/koyomi.html>
- [1] ''[ruby-list:32772] newdate'' <http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/32772> からの一連のスレッド
- [2] ''こよみの読み方 ver2RC'' <http://www.ffortune.net/calen/calen/yomi99/>
- [3] ''よくある質問とその答'' <http://aglaia.c.u-tokyo.ac.jp/~yamamoto/Script/Calendar/faq.html>


[6] [CITE[紀元・暦法を集めるスレ]]
([TIME[2016-03-12 23:44:03 +09:00]] 版)
<http://academy4.2ch.net/test/read.cgi/whis/1044889496/>

[7] [CITE@en[RFC 7529 - Non-Gregorian Recurrence Rules in the Internet Calendaring and Scheduling Core Object Specification (iCalendar)]]
( ([TIME[2016-06-19 08:27:48 +09:00]]))
<https://tools.ietf.org/html/rfc7529>

[FIG(quote)[
[FIGCAPTION[
[13] [CITE@ja[暦 - Uyopedia]]
([TIME[2015-05-26 23:42:14 +09:00]])
<http://uyopedia.a.freewiki.in/index.php/%E6%9A%A6>
]FIGCAPTION]

> しいていえば暦制は月日を編成する原理そのものをを言い、暦法はそのための天文学計算の数値や計算式を念頭に置いた表現ということができるが、暦法も暦制もほぼ同義に使われる。

]FIG]

[16] [CITE@ja[暦 - Uyopedia]] ([TIME[2018-11-14 23:35:46 +09:00]]) <https://web.archive.org/web/20160404020010/http://uyopedia.a.freewiki.in/index.php/%E6%9A%A6>

[15] [CITE@en[MenoData/Time4J: Advanced date, time and interval library for Java]]
([TIME[2018-03-18 15:41:36 +09:00]])
<https://github.com/MenoData/Time4J>

[40] [CITE[暦の基礎知識]]
([TIME[2019-06-14 18:22:31 +09:00]])
<https://web.archive.org/web/20120924025620/http://www.tulips.tsukuba.ac.jp/hon_kataru/katudou/012.html>

[41] [CITE@ja[「暦法」と「カレンダー」: suchowan's blog]], [TIME[2022-06-06T09:06:36.000Z]] <https://suchowan.at.webry.info/201604/article_5.html>


[42] [CITE@ja[文明の「暦」史観 : 太陰暦、太陽暦、太陰太陽暦の相克と共存]], [[中牧 弘允]], [TIME[2008-10-24]], [TIME[2011-03-11]], [TIME[2022-12-21T09:47:27.000Z]] <https://minpaku.repo.nii.ac.jp/index.php?active_action=repository_view_main_item_detail&page_id=13&block_id=21&item_id=234&item_no=1>

[43] [CITE@en[Calendar Wiki | Fandom]], [TIME[2023-04-23T07:27:13.000Z]], [TIME[2023-04-24T13:02:25.200Z]] <https://calendars.fandom.com/wiki/Main_Page>

[44] [CITE[Fixed Arithmetic Calendar Cycle Jitter]], [[Dr. Irv Bromberg, University of Toronto, Canada]], [TIME[2022-07-31T04:45:19.000Z]], [TIME[2023-07-04T14:06:36.799Z]] <http://individual.utoronto.ca/intervalmath/jitter/>

[45] [CITE[Alpo Balognia: Calendar A]], [TIME[2007-02-26T15:02:20.000Z]], [TIME[2023-07-05T09:09:22.479Z]] <http://the-light.com/cal/converter/calendarA.html>

[46] [CITE[Dove Calendar]], [TIME[2006-02-01T05:31:17.000Z]], [TIME[2023-07-05T09:18:50.154Z]] <http://the-light.com/cal/kp_Dove.html>

[47] [CITE[Karl Palmen's Calendars]], [TIME[2022-12-24T21:05:18.000Z]], [TIME[2023-07-05T09:21:25.045Z]] <https://www.hermetic.ch/cal_stud/palmen/index.html>

[48] [CITE[Karl's Fun Calendars]], [TIME[2006-02-01T05:31:27.000Z]], [TIME[2023-07-05T09:22:55.657Z]] <http://the-light.com/cal/kp_funcalendars.html>

[49] [CITE[Lufkan Calendar Spoof]], [TIME[2006-02-01T05:31:19.000Z]], [TIME[2023-07-05T09:23:12.089Z]] <http://the-light.com/cal/kp_Lufkan_spoof.html>

[336] [CITE[43/450 Calendar]], [TIME[2005-01-17T08:00:00.000Z]], [TIME[2023-07-05T09:03:59.379Z]] <http://the-light.com/calendar.html>

[337] [CITE[28/293 Calendar]], [TIME[2006-02-01T05:32:17.000Z]], [TIME[2023-07-05T09:26:19.132Z]] <http://the-light.com/cal/ve28293.htm>

[50] [CITE[null]], [TIME[2006-02-01T05:32:17.000Z]], [TIME[2023-07-05T09:26:49.821Z]] <http://the-light.com/cal/ve28293a.htm>

[51] [CITE[null]], [TIME[2006-02-01T05:32:18.000Z]], [TIME[2023-07-05T09:26:59.190Z]] <http://the-light.com/cal/ve28293h.htm>
