唐代の立秋

when.exe で唐代の立秋の一覧表を計算したいという質問をいただきました。

立秋は二十四節気の七月節ですから、節月の7月1日にあたります。
when.exe Ruby版のRailsデモで例えば宣明暦(節月)を計算するのであれば、

http://hosi.org:3000/
 ↓ (左上のアイコン)
http://hosi.org:3000/cookies
 ↓ (ChineseSolar選択)
http://hosi.org:3000/cookies/ChineseSolar

と入って、宣明暦(節月)に設定し、
再び http://hosi.org:3000/ に戻って計算したい宣明暦(節月)の
年月日を選べば計算できます。

白居易(772~846)の時代の一覧を計算するとすれば、
~~~~~~~~~~~~
 require 'when_exe'
 include When

 大衍 = Calendar('Chinese::大衍暦(節月)')
 五紀 = Calendar('Chinese::五紀暦(節月)')
# 正元 = Calendar('Chinese::正元暦(節月)')
 正元 = CalendarTypes::ChineseSolar.new({'formula'=>
  'MeanLunation?year_length=399943/1095&lunation_length=32336/1095&day_epoch=-145149709'})
 宣明 = Calendar('Chinese::宣明暦(節月)')

 [[772..783, 五紀],
  [784..806, 正元],
  [807..821, 大衍], # 観象暦
  [822..846, 宣明],
].each do |range, calendar|
  range.each do |year|
   sdate = when?("#{year}-07-01", {:frame=>calendar})
   jdate = sdate ^ Calendar('Julian')
   cdate = sdate ^ CalendarEra('Chinese')
   puts "#{sdate}, #{jdate}, #{cdate}"
  end
 end
~~~~~~~~~~~~
のようなスクリプトになるでしょう。
807~821の期間は実際には観象暦なのですが、観象暦はすでに計算方法が
失われて現代には伝わっていません。新唐書によれば観象暦は疎漏で大衍暦
で代用したというような記述もあります。このため仮に大衍暦で計算して
います。また、正元暦は日本で使われたことがないため、ライブラリには組み
込んでいませんが、計算パラメータが新唐書に書いてあるのでスクリプトの中で
定義してみました。次回リリースでは正元暦(節月)もライブラリに組み込もう
と思います。

この記事へのコメント

この記事へのトラックバック