Class: When::CalendarTypes::CalendarNote::SolarTerms

Inherits:
LuniSolarPositions show all
Defined in:
lib/when_exe/calendartypes.rb,
lib/when_exe/region/japanese_notes.rb

Overview

太陽黄経による暦注

Constant Summary collapse

Notes12 =
%w(正月 二月 三月 四月 五月 六月 七月 八月 九月 十月 十一月 十二月)
Notes60_A =
[
  #  +0      
  '侯小過外', # 315 : 正月
  '侯需外',   # 345 : 二月
  '侯豫外',   #  15 : 三月
  '侯旅外',   #  45 : 四月
  '侯大有外', #  75 : 五月
  '侯鼎外',   # 105 : 六月
  '侯常外',   # 135 : 七月
  '侯巽外',   # 165 : 八月
  '侯帰妹外', # 195 : 九月
  '侯良外',   # 225 : 十月
  '侯未済外', # 255 : 十一月
  '侯屯外'    # 285 : 十二月
]
Notes60_B =
[
  #  +3          +9       +15       +21       +27
  '大夫蒙',   '卿益',   '公漸',   '辟泰',   '侯需内',   # 315 : 正月
  '大夫随',   '卿晋',   '公解',   '辟大壮', '侯豫内',   # 345 : 二月
  '大夫訟',   '卿蠱',   '公革',   '辟夬',   '侯旅内',   #  15 : 三月
  '大夫師',   '卿比',   '公小畜', '辟乾',   '侯大有内', #  45 : 四月
  '大夫家人', '卿井',   '公咸',   '辟女后', '侯鼎内',   #  75 : 五月
  '大夫豊',   '卿渙',   '公履',   '辟遁',   '侯常内',   # 105 : 六月
  '大夫節',   '卿同人', '公損',   '辟否',   '侯巽内',   # 135 : 七月
  '大夫萃',   '卿大畜', '公賁',   '辟観',   '侯帰妹内', # 165 : 八月
  '大夫無妄', '卿明夷', '公因',   '辟剥',   '侯良内',   # 195 : 九月
  '大夫既済', '卿噬嗑', '公大過', '辟坤',   '侯未済内', # 225 : 十月
  '大不蹇',   '卿頤',   '公中孚', '辟復',   '侯屯内',   # 255 : 十一月
  '大夫謙',   '卿睽',   '公升',   '辟臨',   '侯小過内'  # 285 : 十二月
]
Notes72 =
[
      # 宣明暦(中国)       宣明暦            貞享暦   宝暦暦・寛政暦 略本暦
      # 315 : 正月
%w(東風解凍          東風解凍          東風解凍     東風解凍   東風解凍),
%w(蟄始振            蟄虫始振          梅花乃芳     黄鶯睍睆   黄鶯睍睆),
%w(魚上氷            魚上氷            魚上氷       魚上氷     魚上氷),
%w(獺祭魚            獺祭魚            土脈潤起     土脈潤起   土脉潤起),
%w(鴻雁来            鴻雁来            霞彩碧空     霞始靆     霞始靆),
%w(草木萌動          草木萌動          草木萌動     草木萌動   草木萌動),

      # 345 : 二月
%w(桃始華            桃始華            蟄虫啓戸     蟄虫啓戸   蟄虫啓戸),
%w(倉庚鳴            倉庚鳴            寒雨間熟     桃始笑     桃始笑),
%w(鷹化為鳩          鷹化為鳩          菜虫化蝶     菜虫化蝶   菜虫化蝶),
%w(玄鳥至            玄鳥至            雀始巣       雀始巣     雀始巣),
%w(雷乃発声          雷乃発声          雷乃発声     桜始開     桜始開),
%w(始電              始電              桜始開桃始笑 雷乃発声   雷乃発声),

      #  15 : 三月
%w(桐始華            桐始華            玄鳥至       玄鳥至     玄鳥至),
%w(田鼠化為鴑        田鼠化為鴑        鴻雁北       鴻雁北     鴻雁北),
%w(虹始見            虹始見            虹始見       虹始見     虹始見),
%w(萍始生            萍始生            葭始生       葭始生     葭始生),
%w(鳴鳩払其羽        鳴鳩払其羽        牡丹華       霜止出苗   霜止出苗),
%w(戴勝降桑          戴勝降桑          霜止出苗     牡丹華     牡丹華),

      #  45 : 四月
%w(螻蟈鳴            螻蟈鳴            鵑始鳴       鼃始鳴     鼃始鳴),
%w(蚯蚓出            蚯蚓出            蚯蚓出       蚯蚓出     蚯蚓出),
%w(王瓜生            王瓜生            竹笋生       竹笋生     竹笋生),
%w(苦菜秀            苦菜秀            蚕起食桑     蚕起食桑   蚕起食桑),
%w(靡草死            靡草死            紅花栄       紅花栄     紅花栄),
%w(小暑至            小暑至            麦秋至       麦秋至     麦秋至),

      #  75 : 五月
%w(蟷螂生            蟷螂生            螳螂生       螳螂生     螳螂生),
%w(鵙始鳴            鵙始鳴            腐草為螢     腐草為螢   腐草為螢),
%w(反舌無声          反舌無声          梅始黄       梅子黄     梅子黄),
%w(鹿角解            鹿角解            乃東枯       乃東枯     乃東枯),
%w(蝉始鳴            蝉始鳴            分龍雨       菖蒲華     菖蒲華),
%w(半夏生            半夏生            半夏生       半夏生     半夏生),

      # 105 : 六月
%w(温風至            温風至            温風至       温風至     温風至),
%w(蟋蟀居壁          蟋蟀居壁          蓮始華       蓮始華     蓮始開),
%w(鷹乃学習          鷹乃学習          鷹乃学習     鷹乃学習   鷹乃学習),
%w(腐草為螢          腐草為螢          桐始結花     桐始結花   桐始結花),
%w(土潤溽暑          土潤溽暑          土潤溽暑     土潤溽暑   土潤溽暑),
%w(大雨時行          大雨時行          大雨時行     大雨時行   大雨時行),

      # 135 : 七月
%w(涼風至            涼風至            涼風至       涼風至     涼風至),
%w(白露降            白露降            山沢浮雲     寒蝉鳴     寒蝉鳴),
%w(寒蝉鳴            寒蝉鳴            霧色已成     蒙霧升降   蒙霧升降),
%w(鷹乃祭鳥          鷹乃祭鳥          寒蝉鳴       綿柎開     綿柎開),
%w(天地始粛          天地始粛          天地始粛     天地始粛   天地始粛),
%w(禾乃登            禾乃登            禾乃登       禾乃登     禾乃登),

      # 165 : 八月
%w(鴻雁来            鴻雁来            草露白       草露白     草露白),
%w(玄鳥帰            玄鳥帰            鶺鴒鳴       鶺鴒鳴     鶺鴒鳴),
%w(群鳥養羞          群鳥養羞          玄鳥去       玄鳥去     玄鳥去),
%w(雷乃収声          雷乃収声          鴻雁来       雷乃収声   雷乃収声),
%w(蟄虫坏戸          蟄虫坏戸          蟄虫坏戸     蟄虫坏戸   蟄虫坏戸),
%w(水始涸            水始涸            水始涸       水始涸     水始涸),

      # 195 : 九月
%w(鴻雁来賓          鴻雁来賓          棗栗零       鴻雁来     鴻雁来),
%w(雀入大水為蛤      雀入大水為蛤      蟋蟀在戸     菊花開     菊花開),
%w(菊有黄花          菊有黄花          菊花開       蟋蟀在戸   蟋蟀在戸),
%w(豺乃祭獣          豺祭獣            霜始降       霜始降     霜始降),
%w(草木黄落          草木黄落          蔦楓紅葉     霎時施     霎時施),
%w(蟄虫咸俯          蟄虫咸俯          鶯雛鳴       楓蔦黄     楓蔦黄),

      # 225 : 十月
%w(水始氷            水始氷            山茶始開     山茶始開   山茶始開),
%w(地始凍            地始凍            地始凍       地始凍     地始凍),
%w(野鶏入大水為蜃    野鶏入大水為蜃    霎乃降       金盞香     金盞香),
%w(虹蔵不見          虹蔵不見          虹蔵不見     虹蔵不見   虹蔵不見),
%w(天気上騰地気下降  天気上騰地気下降  樹葉咸落     朔風払葉   朔風払葉),
%w(閉塞而成冬        閉塞成冬          橘始黄       橘始黄     橘始黄),

      # 255 : 十一月
%w(鶡鳥不鳴          鶡鳥不鳴          閉塞成冬     閉塞成冬   閉塞成冬),
%w(虎始交            武始交            熊蟄穴       熊蟄穴     熊蟄穴),
%w(茘挺生            茘挺生            水仙開       鱖魚群     鱖魚群),
%w(蚯蚓結            蚯蚓結            乃東生       乃東生     乃東生),
%w(麋角解            麋角解            麋角解       麋角解     麋角解),
%w(水泉動            水泉動            雪下出麦     雪下出麦   雪下出麦),

      # 285 : 十二月
%w(雁北嚮            雁北嚮            芹乃栄       芹乃栄     芹乃栄),
%w(鵲始巣            鵲始巣            風気乃行     水泉動     水泉動),
%w(野鶏始鴝          野鶏始鴝          雉始雊       雉始雊     雉始雊),
%w(鶏始乳            鶏始乳            款冬華       款冬華     款冬華),
%w(鷙鳥厲疾          鷙鳥厲疾          水沢腹堅     水沢腹堅   水沢腹堅),
%w(水沢腹堅          水沢腹堅          鶏始乳       鶏始乳     鶏始乳)

Constants inherited from When::CalendarTypes::CalendarNote

BahaiNotes, ChineseNotes, DefaultNotes, JavaneseNotes, JulianDayNotes, MayanNotes, YiNotes

Constants included from Parts::Resource

Parts::Resource::LabelProperty, Parts::Resource::Prefix, Parts::Resource::PrefixIndex, Parts::Resource::PrefixKeys, Parts::Resource::PrefixValues

Instance Attribute Summary

Attributes inherited from LuniSolarPositions

#delta, #den, #formula, #margin, #num

Attributes inherited from When::CalendarTypes::CalendarNote

#event

Attributes inherited from TM::ReferenceSystem

#domain, #domain_of_validity, #position

Attributes inherited from BasicTypes::Object

#label

Attributes included from Parts::Resource

#_pool, #child, #keys, #locale, #namespace

Class Method Summary collapse

Methods inherited from LuniSolarPositions

#position, #term, #term_delta

Methods inherited from When::CalendarTypes::CalendarNote

#copy, #day, #duration, #enum_for, #include?, #month, #note?, #notes, #year

Methods inherited from TM::ReferenceSystem

#name

Methods inherited from BasicTypes::Object

#tap

Methods included from Parts::Resource

#[], #^, _extract_prefix, _instance, _parse, _path_with_prefix, #each, #enum_for, #hierarchy, #include?, #included?, #iri, #leaf?, #m17n, #map, #next, #parent, #prev, #registered?

Methods included from Parts::Resource::Pool

#[], #[]=, #_pool, #_setup_, #pool_keys

Methods included from Parts::Resource::Synchronize

#synchronize

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class When::Parts::Resource

Class Method Details

._day_notes(notes, dates, conditions = {}) ⇒ Object

日の暦注



851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
# File 'lib/when_exe/region/japanese_notes.rb', line 851

def self._day_notes(notes, dates, conditions={})
  date = When.when?(dates.o_date.to_cal_date.to_s,
                   {:clock=>When.Clock(dates.s_date.frame.timezone[0]*86400)})
  longitude, motsu = dates.s_terms.position(date)

  # 三伏 - 庚
  #
  # 初 : 夏至から 20..29
  # 仲 : 夏至から 30..39
  # 後 : 立秋から  0..9 
  if !notes['三伏'] && notes[''].remainder == 6 # 庚
    if 109 <= longitude && longitude <= 129      # 夏至から
      term = dates.s_terms.term(date, [-270,360])
      diff = dates.s_date.to_i - term.to_i
      notes['三伏'] = '初伏' if 20 <= diff && diff <= 29
      notes['三伏'] = '中伏' if 30 <= diff && diff <= 39
    elsif longitude == 135                     # 立秋
      notes['三伏'] = '末伏'
    elsif 136 <= longitude && longitude <= 144 # 立秋から
      term = dates.s_terms.term(date, [-225,360])
      diff = dates.s_date.to_i - term.to_i
      notes['三伏'] = '末伏' if 0 < diff && diff <= 9
    end
  end

  # 社 - 戊
  #
  # 春秋分から -5..4
  if !notes[''] && notes[''].remainder == 4 # 戊
    if (longitude + 5) % 180 < 10 # 春秋分の近傍
      term = dates.s_terms.term(date - When.Duration('P6D'), [0,180])
      diff = dates.s_date.to_i - term.to_i
      notes[''] = '' if -5 <= diff && diff <= 4
    end
  end

  # 臘 - 辰
  #
  # 大寒から -6..5
  if !notes[''] && notes[''].remainder == 4 # 辰
    if (longitude - 339) % 360 < 12 # 大寒の近傍
      term = dates.s_terms.term(date - When.Duration('P7D'), [345,360])
      diff = dates.s_date.to_i - term.to_i
      notes[''] = '' if -6 <= diff && diff <= 5
    end
  end

  # 入梅 - 壬
  #
  # 芒種から 0..11
  if !notes['入梅'] && notes[''].remainder == 8 # 壬
    if (longitude - 120) % 360 < 10 # 芒種の近傍
      term = dates.s_terms.term(date - When.Duration('P1D'), [120,360])
      diff = dates.s_date.to_i - term.to_i
      notes['入梅'] = '入梅' if 0 <= diff && diff <= 11
    end
  end

  # 土用事
  unless notes['土用事']
    _longitude, _motsu = dates.doyo ? dates.s_terms.position(date, -dates.doyo) : [longitude, motsu]
    if _motsu != 0 && _longitude % 90 == 27
      notes['土用事'] =
        (dates.year <  697) ? '土用'   : # 元嘉暦以前
        (dates.year <  764) ? '土王'   : # 麟徳暦
        (dates.year < 1685) ? '土用事' : # 大衍暦~宣明暦
                              '土用入'   # 貞享暦以降
    end
  end

  # 没
  if motsu == 0
    notes[''] = '' if dates.year < 1685
    return notes
  end

  # 伏龍
  notes['伏龍']     ||= {
    315 => '庭内去堂',  15 => '門内百日', 115 => '東垣六十日',
    175 => '四隅百日', 275 => '竈内四十日'
  }[longitude]

  # 廿四節気
  div, mod = longitude.divmod(15)
  if mod == 0
    notes['廿四節気'] = (div - 21) % 24
    div, mod = notes['廿四節気'].divmod(2)
    notes['節中']   ||= Notes12[div] + %w( )[mod]
  end

  # 六十卦
  div, mod = longitude.divmod(30)
  notes['六十卦']   ||= mod == 15 ? Notes60_A[(div - 10) % 12] : nil
  div, mod = longitude.divmod(6)
  notes['六十卦']   ||= mod == 0  ? Notes60_B[(div - 53) % 60] : nil

  # 七十二候
  div, mod = longitude.divmod(5)
  notes['七十二候'] ||= mod == 0  ? Notes72[(div - 63) % 72][dates.index_s]  : nil

  # 彼岸
  notes['彼岸']     ||= longitude % 180 == 2 ? '彼岸'  : nil

  # 往亡
  month    = dates.s_date.cal_date[1] - 1
  div, mod = month.divmod(3)
  notes['往亡']     ||= ((div+7)*(mod+1) + month * 30 + 314 - longitude) % 360 == 0 ? '往亡'  : nil

  # 日食
  notes['日食']        = nil # 計算できないので、偽としておく
  notes
end