太陰太陽暦
人が最初に季節を知るための手がかりとしたのは、空の星であったといわれているが、さらに月の満ち欠けも日にちを数える手がかりとして使われ、この月の満ち欠けをもとに世界各地で「太陰暦」という暦が作られるようになった。
天体の月が最も欠けた状態を「朔」(さく)と言い、この「朔」から約15日たつと満月になる。これを「望」(ぼう)という。「望」からまた約15日たつと「朔」となる。この「朔」→「望」→「朔」の約30日間を「一か月」とし、これを12回繰り返すことで「一年」とする。「太陰暦」とは本来このようなものである。「朔」から「朔」へ戻る周期、すなわち「太陰暦」の一か月を「朔望月」という。この朔望月は暦の上では「30日」か「29日」のどちらかになる。そして後世「30日」は「大の月」、「29日」は「小の月」と呼ばれている。一年のうちで「30日」と「29日」になる順番は年ごとに変わる。
しかしこの「太陰暦」をこのまま使うには問題があった。季節が暑くなったり寒くなったりする時期は、地球が太陽を1周する日数(太陽暦の一年)の間で決まる。しかし「太陰暦」の一年は、地球が太陽を1周する日数よりも約11日短い。これをこのまま使えば暦と季節はずれを生じ続け、たとえば暦の上では春のはずが実際の季節はまだ真冬ということになりかねない。そこでこうしたずれを防ぐため、「太陰暦」の1年を13か月にする方法が多く取られた。1年の日数を1か月分増やすことによって、暦を遅らせたのである。そして再び暦と季節がずれを起こせば、また1年を13か月にする。本来の12か月のほかに挿入された「月」のことを「閏月」と呼び、「○月」の次の月を閏月にする場合は、その月のことを「閏○月」と呼ぶ。
日中、星鳥、以殷仲春 〔中略〕 日永、星火、以正仲夏 〔中略〕 宵中、星虚、以殷仲秋 〔中略〕 日短、星昴、以正仲冬 〔中略〕 朞三百有六旬有六日、以閏月定四時、成歳
昼と夜が同じ長さで、鳥の星が夕暮れの空に見えたら春分とせよ 〔中略〕 日が長く、火の星が空に見えたら夏至とせよ 〔中略〕 夜と昼が同じ長さで、虚の星が見えたら秋分とせよ 〔中略〕 日が短く、昴の星が見えたら冬至とせよ 〔中略〕 一年の日数を三百六十六日とし、閏月を入れて暦が四季と合うように定めよ
これらは日の長短と「鳥」「火」「虚」「昴」という星々を観測することにより、春分・夏至・秋分・冬至それぞれの日を定めるとしている。これらの星の観測は紀元前2000年前後にまでさかのぼるが、「朞三百有六旬有六日」云々のくだりは一年を366日としていることから、後世の知識が入っているとされている。『淮南子』天文訓には二十四気(二十四節気)について、十五日を経て空の星を見ることで、「冬至」をはじめとする二十四気の日がわかるとしている。
古代バビロンとインドの太陰太陽暦は、二十四節気ではなく黄道十二宮によって閏月を暦に入れている。バビロンではセレウコス朝以後(紀元前312年以降)にメトン周期の原理が用いられたが、それより前の暦ではこの黄道十二宮に基づいて太陽の位置を計算し、閏月を暦に置くことがあった。
日本の歴史で明治5年以前、明治4年までの年については、グレゴリオ暦による西暦を単純に当てはめると不適切な場合がある。例えば寛永7年は、グレゴリオ暦では1630年2月12日から1631年1月31日までの間に当たり、寛永7年の年末はグレゴリオ暦で1631年となる。つまり太陰太陽暦の年末は、西暦ではすでに新年を迎え次の年になっているので、日本の歴史上の出来事を西暦の何年と当てはめる際には、それに注意しなければならないということである。
赤穂浪士の討ち入りの日を「元禄15年(1702年)12月14日」とするのを見ることがあるが、元禄15年12月はグレゴリオ暦では1703年の1月〜2月に当たるので、1702年とするのは不適切である。また元禄15年の12月14日はグレゴリオ暦の日付では1月30日にあたるが、討ち入りしたとき既に深夜0時を過ぎていたので、討ち入りは「1月31日」の出来事になる。よって赤穂浪士の討入りの日付を文献史料などに記載する場合には、「元禄15年12月14日(1703年1月31日未明)」とするのが最も適切である。