# File AlmanacForRuby/AlmanacSolarTerm.rb, line 356 def get_cyuu_immediately_before_target_day(target_day) # 中の日の格納域 cyuu_date_time = AlmanacDateTime.now # 月ごとの、直前の中候補 # 1月の場合、直前の中は"大寒"(SOLAR_TERM_NUMBER=23) # または"冬至"(SOLAR_TERM_NUMBER=21) # 2月の場合、直前の中は"雨水"(SOLAR_TERM_NUMBER=1) # または"大寒"(SOLAR_TERM_NUMBER=23) # 3月の場合、直前の中は"春分"(SOLAR_TERM_NUMBER=3) # または"雨水"(SOLAR_TERM_NUMBER=1) # 4月の場合、直前の中は"穀雨"(SOLAR_TERM_NUMBER=5) # または"春分"(SOLAR_TERM_NUMBER=3) # 5月の場合、直前の中は"小満"(SOLAR_TERM_NUMBER=7) # または"穀雨"(SOLAR_TERM_NUMBER=5) # 6月の場合、直前の中は"夏至"(SOLAR_TERM_NUMBER=9) # または"小満"(SOLAR_TERM_NUMBER=7) # 7月の場合、直前の中は"大暑"(SOLAR_TERM_NUMBER=11) # または"夏至"(SOLAR_TERM_NUMBER=9) # 8月の場合、直前の中は"処暑"(SOLAR_TERM_NUMBER=13) # または"大暑"(SOLAR_TERM_NUMBER=11) # 9月の場合、直前の中は"秋分"(SOLAR_TERM_NUMBER=15) # または"処暑"(SOLAR_TERM_NUMBER=13) # 10月の場合、直前の中は"霜降"(SOLAR_TERM_NUMBER=17) # または"秋分"(SOLAR_TERM_NUMBER=15) # 11月の場合、直前の中は"小雪"(SOLAR_TERM_NUMBER=19) # または"霜降"(SOLAR_TERM_NUMBER=17) # 12月の場合、直前の中は"冬至"(SOLAR_TERM_NUMBER=21) # または"小雪"(SOLAR_TERM_NUMBER=19) target_solar_term_number = 1 + 2 * (target_day.month - 2) if 0 > target_solar_term_number target_solar_term_number = 23 end other_target_solar_term_number = 1 + 2 * (target_day.month - 3) if 0 > other_target_solar_term_number other_target_solar_term_number = 21 + 2 * (target_day.month - 1) end # 直前の中の日を求める cyuu_date_time \ = get_sekki_date_time( \ target_day.year, \ target_day.offset, \ target_solar_term_number) if cyuu_date_time.day > target_day.day if other_target_solar_term_number == 21 target_day.year -= 1 end cyuu_date_time \ = get_sekki_date_time( \ target_day.year, \ target_day.offset, \ other_target_solar_term_number) end return cyuu_date_time end