日家九星の計算方法

2018年1月13日の日記に改訂版を書きましたが、本ページも記録として残しておきます。

2016年3月21日:記述を一部修正しました。
ゴースト「もへじ男爵」で実装している様々な計算 (月齢・朔望・暦注など) で最も苦戦したのが「日家九星」でした。
最初は計算ではなく、テーブルから参照して求めていたものを、途中から計算で求めるようにしたのですが、なかなか信頼できるリファレンス *1 *2 と結果が完全に一致せず悩んでいました。しかし、ようやく満足のいく実装ができましたので、その方法を記しておこうと思います*3

以下では、2008年12月31日の日家九星を求めていきます。

夏至冬至の日付と、その日の干支を求める

まずは、日家九星を求めたい日を含む年、およびその前年・翌年の夏至冬至の日付を、計算により求めます。
日付は、世界時00時 *4 時点の「ユリウス通日 JD *5」に換算しておくと良いでしょう。説明の便宜上、ここでは JD から 2400000.5 を差し引いた値である「修正ユリウス日 MJD」を代わりに用います。2008年の場合ですから、2007年から2009年まで求めることになります。

  2007夏 2007冬 2008夏 2008冬 2009夏 2009冬
夏至冬至の日付
(MJD)
2007/06/22
(54273)
2007/12/22
(54456)
2008/06/21
(54638)
2008/12/21
(54821)
2009/06/21
(55003)
2009/12/22
(55187)

次に、上記で求めた夏至冬至の日の干支を、計算により求めます。
日の干支というのは、十干 *6 と十二支 *7 を、日付に順番に割り当てたものです。下表に示すように、60日で一巡する形となりますので、甲子から順に 00〜59 の値を割り振っておきます。

甲子 (00) 乙丑 (01) 丙寅 (02) 丁卯 (03) 戊辰 (04) 己巳 (05)
庚午 (06) 辛未 (07) 壬申 (08) 癸酉 (09) 甲戌 (10) 乙亥 (11)
丙子 (12) 丁丑 (13) 戊寅 (14) 己卯 (15) 庚辰 (16) 辛巳 (17)
壬午 (18) 癸未 (19) 甲申 (20) 乙酉 (21) 丙戌 (22) 丁亥 (23)
戊子 (24) 己丑 (25) 庚寅 (26) 辛卯 (27) 壬辰 (28) 癸巳 (29)
甲午 (30) 乙未 (31) 丙申 (32) 丁酉 (33) 戊戌 (34) 己亥 (35)
庚子 (36) 辛丑 (37) 壬寅 (38) 癸卯 (39) 甲辰 (40) 乙巳 (41)
丙午 (42) 丁未 (43) 戊申 (44) 己酉 (45) 庚戌 (46) 辛亥 (47)
壬子 (48) 癸丑 (49) 甲寅 (50) 乙卯 (51) 丙辰 (52) 丁巳 (53)
戊午 (54) 己未 (55) 庚申 (56) 辛酉 (57) 壬戌 (58) 癸亥 (59)

修正ユリウス日 MJD に 50 を加えた値を 60 で割った剰余 (余り) が、その日の干支 K となります。
K = (MJD + 50) mod 60

  2007夏 2007冬 2008夏 2008冬 2009夏 2009冬
夏至冬至の日付
(MJD)
2007/06/22
(54273)
2007/12/22
(54456)
2008/06/21
(54638)
2008/12/21
(54821)
2009/06/21
(55003)
2009/12/22
(55187)
日の干支 (K) 丁亥 (23) 庚寅 (26) 壬辰 (28) 乙未 (31) 丁酉 (33) 辛丑 (37)

陽遁・陰遁の切替日の日付を求める

日家九星は、冬から夏にかけては「一白→二黒→……→九紫→一白→……」と昇順に並ぶ「陽遁」(180日) 、夏から冬にかけては「九紫→八白→……→一白→九紫→……」と降順に並ぶ「陰遁」(180日) になります。
陽遁・陰遁は、下記の規則に従って切り替わります。

  • 冬至に最も近い甲子の日を切替日として、一白から陽遁を開始する。
  • 夏至に最も近い甲子の日を切替日として、九紫から陰遁を開始する。

ただ、上記の規則で陽遁・陰遁を繰り返していくと、陽遁・陰遁が合わせて360日である一方、1年は約365.2422日ですから、次第にズレが大きくなり、夏至冬至に最も近い甲子の日が切替日ではなくなってしまいます。そこで、11年〜12年の一度の割合で、陽遁・陰遁の期間を30日ずつ延長して、ズレを調整しています。この延長された期間 (60日) を「九星の閏」と呼びます。
九星の閏での陽遁・陰遁は、下記の規則に従って切り替わります。

  • 冬至または前後1日に甲午がある場合、甲午の日を切替日として、七赤から陽遁を開始する。
  • 夏至または前後1日に甲午がある場合、甲午の日を切替日として、三碧から陰遁を開始する。

すなわち、夏至冬至の日の干支 K から、切替日は次のように求めることができます。

  • 「甲子 (00)」から「壬辰 (28)」なら、直前の甲子の日 (夏至冬至の K 日前)
  • 「丙申 (32)」から「癸亥 (59)」なら、直後の甲子の日 (夏至冬至の (60 - K) 日後)
  • 「癸巳 (29)」から「乙未 (31)」なら、最も近い甲午の日 (夏至冬至の (30 - K) 日後)
  2007夏 2007冬 2008夏 2008冬 2009夏 2009冬
夏至冬至の日付
(MJD)
2007/06/22
(54273)
2007/12/22
(54456)
2008/06/21
(54638)
2008/12/21
(54821)
2009/06/21
(55003)
2009/12/22
(55187)
日の干支 (K) 丁亥 (23) 庚寅 (26) 壬辰 (28) 乙未 (31) 丁酉 (33) 辛丑 (37)
切替日の日付
(MJD)
2007/05/30
(54250)
2007/11/26
(54430)
2008/05/24
(54610)
2008/12/20
(54820)
2009/07/18
(55030)
2010/01/14
(55210)
切替日の干支 (K) 甲子 (00) 甲子 (00) 甲子 (00) 甲午 (30) 甲子 (00) 甲子 (00)
切替日の九星 九紫 (陰遁) 一白 (陽遁) 九紫 (陰遁) 七赤 (陽遁) 九紫 (陰遁) 一白 (陽遁)

2008年12月31日 (MJD = 54831) の日家九星ですが、上記の表より、2008年12月20日 (MJD = 54820) を切替日として、七赤から陽遁を開始していることになりますので、九紫火星と求まる訳です。

九星の閏の配置を調整する必要がある場合

大抵は、上記の計算で日家九星を求めることができるのですが、場合によっては、九星の閏の配置を調整しなければならないこともあります。

1. 九星の閏を見逃している場合

まずは、2031年を例に挙げて説明します。

  2030夏 2030冬 2031夏 2031冬 2032夏 2032冬
夏至冬至の日付
(MJD)
2030/06/21
(62673)
2030/12/22
(62857)
2031/06/21
(63038)
2031/12/22
(63222)
2032/06/21
(63404)
2032/12/21
(63587)
日の干支 (K) 丁亥 (23) 辛卯 (27) 壬辰 (28) 丙申 (32) 戊戌 (34) 辛丑 (37)
切替日の日付
(MJD)
2030/05/29
(62650)
2030/11/25
(62830)
2031/05/24
(63010)
2032/01/19
(63250)
2032/07/17
(63430)
2033/01/13
(63610)
切替日の干支 (K) 甲子 (00) 甲子 (00) 甲子 (00) 甲子 (00) 甲子 (00) 甲子 (00)
切替日の九星 九紫 (陰遁) 一白 (陽遁) 九紫 (陰遁) 一白 (陽遁) 九紫 (陰遁) 一白 (陽遁)

2031年夏から2031年冬の切替日までの間隔が240日となっていて、明らかにおかしいことが分かります*8
この場合は、下表のように後側 (2031年冬) の切替日を30日前 (甲午) に変更して、九星の閏を置くようにする必要があります。

  2030夏 2030冬 2031夏 2031冬 2032夏 2032冬
夏至冬至の日付
(MJD)
2030/06/21
(62673)
2030/12/22
(62857)
2031/06/21
(63038)
2031/12/22
(63222)
2032/06/21
(63404)
2032/12/21
(63587)
日の干支 (K) 丁亥 (23) 辛卯 (27) 壬辰 (28) 丙申 (32) 戊戌 (34) 辛丑 (37)
切替日の日付
(MJD)
2030/05/29
(62650)
2030/11/25
(62830)
2031/05/24
(63010)
2031/12/20
(63220)
2032/07/17
(63430)
2033/01/13
(63610)
切替日の干支 (K) 甲子 (00) 甲子 (00) 甲子 (00) 甲午 (30) 甲子 (00) 甲子 (00)
切替日の九星 九紫 (陰遁) 一白 (陽遁) 九紫 (陰遁) 七赤 (陽遁) 九紫 (陰遁) 一白 (陽遁)
2. 九星の閏を余分に置いている場合

続いて、2019年を例に挙げて説明します。

  2018夏 2018冬 2019夏 2019冬 2020夏 2020冬
夏至冬至の日付
(MJD))
2018/06/21
(58290)
2018/12/22
(58474)
2019/06/22
(58656)
2019/12/22
(58839)
2020/06/21
(59021)
2020/12/21
(59204
日の干支 (K) 甲申 (20) 戊子 (24) 庚寅 (26) 癸巳 (29) 乙未 (31) 戊戌 (34)
切替日の日付
(MJD)
2018/06/01
(58270)
2018/11/28
(58450)
2019/05/27
(58630)
2019/12/23
(58840)
2020/06/20
(59020)
2021/01/16
(59230)
切替日の干支 (K) 甲子 (00) 甲子 (00) 甲子 (00) 甲午 (30) 甲午 (30) 甲子 (00)
切替日の九星 九紫 (陰遁) 一白 (陽遁) 九紫 (陰遁) 七赤 (陽遁) 三碧 (陰遁) 一白 (陽遁)

2019年冬から2020年夏の切替日までの間隔が180日となっていて、明らかにおかしいことが分かります*9
この場合は、下表のように前側 (2019年冬) の切替日を30日前 (甲子) に変更して、九星の閏を置かないようにする必要があります。

  2018夏 2018冬 2019夏 2019冬 2020夏 2020冬
夏至冬至の日付
(MJD)
2018/06/21
(58290)
2018/12/22
(58474)
2019/06/22
(58656)
2019/12/22
(58839)
2020/06/21
(59021)
2020/12/21
(59204)
日の干支 (K) 甲申 (20) 戊子 (24) 庚寅 (26) 癸巳 (29) 乙未 (31) 戊戌 (34)
切替日の日付
(MJD)
2018/06/01
(58270)
2018/11/28
(58450)
2019/05/27
(58630)
2019/11/23
(58810)
2020/06/20
(59020)
2021/01/16
(59230)
切替日の干支 (K) 甲子 (00) 甲子 (00) 甲子 (00) 甲子 (00) 甲午 (30) 甲子 (00)
切替日の九星 九紫 (陰遁) 一白 (陽遁) 九紫 (陰遁) 一白 (陽遁) 三碧 (陰遁) 一白 (陽遁)

上記の調整を行った結果として、1951年〜2050年の間で「九星の閏」が置かれるのは、1951年夏、1962年冬、1974年夏、1985年冬、1997年夏、2008年冬、2020年夏、2031年冬、2043年夏、となります。

*1:『暦日大鑑』(西沢宥綜氏編)

*2:『20世紀暦』『21世紀暦』(いずれも日外アソシエーツ編集部編)

*3:流派による違いがあるので、これが正解というものではない

*4:日本標準時では09時

*5:紀元前4713年1月1日世界時12時からの経過日数

*6:甲・乙・丙・丁・戊・己・庚・辛・壬・癸の10種類

*7:子・丑・寅・卯・辰・巳・午・未・申・酉・戌・亥の12種類

*8:九星の閏を置かない場合、切替日の間隔は180日になるべき

*9:九星の閏を置く場合、切替日の間隔は210日になるべき