旧暦の計算《節気の計算編》

本ページは旧暦の計算のサブページです。

1873(明治6)年のグレゴリオ暦への改暦まで日本で使われていた旧暦
本ページでは、旧暦の計算で必要となる二十四節気の時刻の計算方法について記載する。

目次

平気と定気

朔には平朔と定朔があったのと同じく、二十四節気にも平気定気がある。

平気
1太陽年を時間に関して24等分する点(時間分割法)
節気の間隔が常に約 $15.218\,\day$となる
定気
太陽の黄経が $15\degree$ の倍数となる点(空間分割法)
中気が西洋占星術における黄道十二宮の境界に一致する

二十四節気を纏めたものが下表である。
節気番号については節気番号と月番号を参照。

節気・節月・節気番号・黄経等の対応
(グレゴリオ暦は2020年近辺における凡その日付)
二十四
節気
節月 節気番号を $24$ で
除した剰余
平気法 定気法
グレゴリオ暦 太陽黄経 グレゴリオ暦 黄道十二宮
冬至とうじ11月中気$ 0$12月22日頃$ 0\degree$12月22日頃♑ 磨羯宮
やぎ座
小寒しょうかん12月正節$ 1$01月06日頃$ 15\degree$01月05日頃
大寒だいかん12月中気$ 2$01月21日頃$ 30\degree$01月20日頃♒ 宝瓶宮
みずがめ座
立春りっしゅん1月正節$ 3$02月05日頃$ 45\degree$02月04日頃
雨水うすい1月中気$ 4$02月21日頃$ 60\degree$02月19日頃♓ 双魚宮
うお座
啓蟄けいちつ2月正節$ 5$03月08日頃$ 75\degree$03月05日頃
春分しゅんぶん2月中気$ 6$03月23日頃$ 90\degree$03月21日頃♈ 白羊宮
おひつじ座
清明せいめい3月正節$ 7$04月07日頃$105\degree$04月05日頃
穀雨こくう3月中気$ 8$04月22日頃$120\degree$04月20日頃♉ 金牛宮
おうし座
立夏りっか4月正節$ 9$05月08日頃$135\degree$05月05日頃
小満しょうまん4月中気$10$05月23日頃$150\degree$05月21日頃♊ 双児宮
ふたご座
芒種ぼうしゅ5月正節$11$06月07日頃$165\degree$06月06日頃
夏至げし5月中気$12$06月22日頃$180\degree$06月21日頃♋ 巨蟹宮
かに座
小暑しょうしょ6月正節$13$07月08日頃$195\degree$07月07日頃
大暑たいしょ6月中気$14$07月23日頃$210\degree$07月23日頃♌ 獅子宮
しし座
立秋りっしゅう7月正節$15$08月07日頃$225\degree$08月07日頃
処暑しょしょ7月中気$16$08月22日頃$240\degree$08月23日頃♍ 処女宮
おとめ座
白露はくろ8月正節$17$09月06日頃$255\degree$09月08日頃
秋分しゅうぶん8月中気$18$09月22日頃$270\degree$09月23日頃♎ 天秤宮
てんびん座
寒露かんろ9月正節$19$10月07日頃$285\degree$10月08日頃
霜降そうこう9月中気$20$10月22日頃$300\degree$10月23日頃♏ 天蠍宮
さそり座
立冬りっとう10月正節$21$11月06日頃$315\degree$11月07日頃
小雪しょうせつ10月中気$22$11月22日頃$330\degree$11月22日頃♐ 人馬宮
いて座
大雪たいせつ11月正節$23$12月07日頃$345\degree$12月07日頃

寛政暦以前の節気(平気)

節気の計算

元嘉暦・儀鳳暦・平朔儀鳳暦・大衍暦・五紀暦・宣明暦は平気の暦であり、かつ1太陽年の長さが一定値 $\TSolar$ である。
よって、第 $m$ 節気の時刻 $q_m$ は次式の通り単純な1次関数で表される。

\[ q_m = q_0 + \frac{\TSolar}{24} m \]

貞享暦・宝暦暦・修正宝暦暦・寛政暦も平気の暦であるが、1太陽年の長さは毎年一定値 $d$ ずつ増加/減少する(消長)。
よって、第 $m$ 節気の時刻 $q_m$ には2次の項が加わり、次式の形となる。

\[ q_m = q_0 + \frac{\TSolar}{24} m + \frac{d}{1152} m^2 \]

各暦法における第0節気の時刻 $q_0$ と太陽年の長さ(1次の係数)$\TSolar$、消長 $d$ は次表で与えられる。

平気の計算に用いる定数[注1]
暦法 第0節気の時刻(グレゴリオ暦)
$q_0$
太陽年の長さ
$\TSolar$
消長
$d$
元嘉暦 ($0\,\day$)
儀鳳暦
平朔儀鳳暦
($0\,\day$)
大衍暦 ($0\,\day$)
五紀暦 ($0\,\day$)
宣明暦 ($0\,\day$)
貞享暦 $-0.000002\,\day$
宝暦暦 $-0.000002\,\day$
修正宝暦暦 $-0.000002\,\day$
寛政暦 $+0.000000435370\,\day$[注2]

節気と暦月との関係

平気の暦では、中気から次の中気までの間隔は常に約30.4日である。
これは1ヶ月の長さ(29日乃至30日)よりも長いので、1ヶ月の内に2つの中気が存在することは無い。
また、冬至を含む月(11月)から次の冬至を含む月(11月)までの月数は必ず12ヶ月乃至13ヶ月である。
よって、以下の形で必ず月の名称を決定することができる。

天保暦以降の節気(定気)

定気法の概要

定朔の項でも述べた通り、太陽は地球を焦点とする楕円軌道上を周回している(ケプラーの楕円軌道則)。
そして、太陽は近日点附近では速く動き、遠日点附近では遅く動く(ケプラーの面積速度一定則)。

太陽の楕円軌道(黄道)と二十四節気(定気)
太陽の楕円軌道(黄道)と二十四節気(定気)

上図の太陽の楕円軌道(黄道)を見るとわかる通り、近日点附近では節気から次の節気までの太陽の移動距離が短く、遠日点附近では長い。
これと太陽の進む速さの変化とが相俟って、近日点附近の節気の時間間隔は短く、遠日点附近の節気の時間間隔は長くなる。

なお、2022年現在は近日点は冬至~小寒の間の方向に位置しているが、近日点の方向は少しずつ変化しており、約21,000年で1周する。

節気の計算

定朔のときと同じく、定気も太陽の黄経 $\lSolar(t)$ から直接求める。

太陽の黄経 $\lSolar(t)$ の変動を図示すると下図のようになる。

1868(明治元)年近辺の太陽の黄経
1868(明治元)年近辺の太陽の黄経 $\lSolar(t)$
(図上部の年月はグレゴリオ暦の年月)

第 $m$ 節気とはすなわち $\lSolar(t) = 15m\degree$ の解であるから、あとはこれを二分探索等で求めてやればよい。

細かい日時は無視して第 $m$ 節気の含まれる月だけを求めたければ、次式を満たす月 $M$ を二分探索等で探せばよい。
(節気は朔ほど細かく日時を意識せずとも「どの暦月に存在するか」さえズレなければ旧暦の日付には影響しない)

\[ \lSolar(M\,\text{月朔日}\,0\,\text{時}) \le {15m\degree} < \lSolar({M + 1}\,\text{月朔日}\,0\,\text{時}) \]

節気と暦月との関係

定気の暦では、近日点附近では中気の間隔が30日を下回る。
これに因り、場合によっては1つの暦月の内に2回の中気が現れる。
こうなると前節の方法では月の名称を決定することができない。

そこで、天保暦では置閏規則を以下の形とすることで、閏月が決定できるようにしている(平山規則)。

  1. 冬至を含む月を「11月」、
    春分を含む月を「2月」、
    夏至を含む月を「5月」、
    秋分を含む月を「8月」とする。
  2. 前条で月の名称が決定できない場合、中気を含まない月を閏月とする。

これはつまり、冬至・春分・夏至・秋分を他の8つの中気よりも優先するということである。

2033年旧暦閏月問題

前項の置閏規則(平山規則)の採用により、1つの暦月の内に2回の中気が現れるような場合でも月の名称を決定できるようになった。
しかし、実のところこれではまだ規則としては不十分である。
平山規則では、以下のような場合には閏月が決定できない。

  1. 冬至月~春分月間、春分月~夏至月間、夏至月~秋分月間、秋分月~冬至月間の間隔が中1ヶ月しか無い場合
  2. 冬至月~春分月間、春分月~夏至月間、夏至月~秋分月間、秋分月~冬至月間に中気を含まない月が複数個存在する場合

このような事態が初めて発生するのが2033–2034年である。
以下にその前後の旧暦月と中気を列挙する。

旧暦月(日付はグレゴリオ暦)含まれる中気(日付はグレゴリオ暦)旧暦月名
A月冬至2032年11月
B月大寒(2032年12月
C月雨水(2033年1月
D月春分2033年2月
E月穀雨(2033年3月
F月小満(2033年4月
G月夏至2033年5月
H月大暑(
I月処暑(
J月-
K月秋分
L月霜降(
M月小雪()と冬至
N月-
O月大寒()と雨水(
P月-
Q月春分2034年2月
R月穀雨(2034年3月
S月小満(2034年4月
T月夏至2034年5月

見ての通り、以下の点で規則に矛盾が生じている。

  1. 秋分月(K月)と冬至月(M月)との間隔が中1ヶ月(L月)しか無い
    ⇒ 9月か10月が存在できない
  2. 冬至月(M月)と春分月(Q月)との間に中気を含まない月が複数個(N月とP月)存在する
    ⇒ どちらが閏月か決定できない

この期間について、一般社団法人 日本カレンダー暦文化振興協会(暦文協)「N月を閏11月とする」案を推奨している。
これはすなわち、規則の矛盾を以下の形で解決するということである。

  1. 冬至月・春分月・夏至月・秋分月の間で不整合がある場合は、冬至月を「11月」とすることを優先する。
  2. 中気を含まない月が複数個あって閏月が決定できない場合は、そのうち先に到来する月を閏月とする

これを加味すると、置閏規則は以下の形となる。
(上から順に適用し、未決の場合に次の規則へ進む)

  1. 冬至を含む月を「11月」とする。
    (この時点で冬至月~次の冬至月間が中11ヶ月であれば、その期間に閏月は無い)
  2. 春分を含む月を「2月」、
    夏至を含む月を「5月」、
    秋分を含む月を「8月」とする。
    (この時点で冬至月・春分月・夏至月・秋分月の間が中2ヶ月であれば、その期間に閏月は無い)
  3. 大寒を含む月を「12月」、
    穀雨を含む月を「3月」、
    大暑を含む月を「6月」、
    霜降を含む月を「9月」とする。
    (この時点で1月・4月・7月・10月が一意に定まるならばそれに従う)
  4. 雨水を含む月を「1月」、
    小満を含む月を「4月」、
    処暑を含む月を「7月」、
    小雪を含む月を「10月」とする。
  5. 最後まで残った月を閏月とする。

こうすることで、2033–2034年の月名は以下の通り定まる。

旧暦月(日付はグレゴリオ暦)含まれる中気(日付はグレゴリオ暦)旧暦月名根拠
A月冬至2032年11月規則1
B月大寒(2032年12月
C月雨水(2033年1月
D月春分(2033年2月
E月穀雨(2033年3月
F月小満(2033年4月
G月夏至(2033年5月
H月大暑(2033年6月
I月処暑(2033年7月
J月-2033年8月
K月秋分(2033年9月
L月霜降(2033年10月
M月小雪()と冬至2033年11月
N月-2033年閏11月規則5
O月大寒)と雨水(2033年12月規則3
P月-2034年1月
Q月春分2034年2月規則2
R月穀雨(2034年3月
S月小満(2034年4月
T月夏至2034年5月

なお、規則2において春分月・夏至月・秋分月の間で不整合がある場合については未解決である(暦文協は「検討を継続する」としている)。
とは言え、近日点が冬至点附近にある間は春分月・夏至月・秋分月の間で不整合が生じることは無いので、今後数千年間は問題は生じないものと考えられる。[注3]

出典・参考資料

脚注