# File AlmanacForRuby/AlmanacOrientalZodiac.rb, line 187
  def get_oriental_zodiac_of_month_number(oriental_zodiac_date_time)

    # 指定年月日の時差を調整し、日本における日時に調整しておく
    oriental_zodiac_date_time \
      = oriental_zodiac_date_time.change_offset_to_japan(oriental_zodiac_date_time)

    oriental_zodiac_of_month_number = 0
    if 1900 > oriental_zodiac_date_time.year
      oriental_zodiac_of_month_number = \
        60 - (((13 - oriental_zodiac_date_time.month) \
        + ((1900 - (oriental_zodiac_date_time.year + 1)) * 12)) % 60)
    else
      oriental_zodiac_of_month_number = \
        ((oriental_zodiac_date_time.month - 1) \
        + ((oriental_zodiac_date_time.year - 1900) * 12)) % 60
    end

    oriental_zodiac_of_month_number += 14

    # 月の干支は、その月の節日をもって切り替わる。
    # 月日がその月の節日を超えていない場合、前月の年の干支番号を求める
    # (求める月の干支番号 = ここまでで求まった月の干支番号 - 1)。

    # その月の節日の日付を得る。
    sekki_number = 0
    if 1 == oriental_zodiac_date_time.month
      sekki_number = 22
    else
      sekki_number = (oriental_zodiac_date_time.month - 2) * 2
    end

    setsu_date_time \
      = AlmanacSolarTerm.new.get_sekki_date_time(oriental_zodiac_date_time.year, \
                                               oriental_zodiac_date_time.offset, \
                                               sekki_number)

    if setsu_date_time.day > oriental_zodiac_date_time.day
      oriental_zodiac_of_month_number -= 1
    end

    # 月の干支番号を0~59の範囲におさめるための補正を行う。
    if oriental_zodiac_of_month_number > 59
      oriental_zodiac_of_month_number -= 60
    end

    return oriental_zodiac_of_month_number
  end