唐代の立秋
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の期間は実際には観象暦なのですが、観象暦はすでに計算方法が
失われて現代には伝わっていません。新唐書によれば観象暦は疎漏で大衍暦
で代用したというような記述もあります。このため仮に大衍暦で計算して
います。また、正元暦は日本で使われたことがないため、ライブラリには組み
込んでいませんが、計算パラメータが新唐書に書いてあるのでスクリプトの中で
定義してみました。次回リリースでは正元暦(節月)もライブラリに組み込もう
と思います。
立秋は二十四節気の七月節ですから、節月の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の期間は実際には観象暦なのですが、観象暦はすでに計算方法が
失われて現代には伝わっていません。新唐書によれば観象暦は疎漏で大衍暦
で代用したというような記述もあります。このため仮に大衍暦で計算して
います。また、正元暦は日本で使われたことがないため、ライブラリには組み
込んでいませんが、計算パラメータが新唐書に書いてあるのでスクリプトの中で
定義してみました。次回リリースでは正元暦(節月)もライブラリに組み込もう
と思います。
この記事へのコメント