# File AlmanacForRuby/AlmanacOrientalZodiac.rb, line 138
  def get_oriental_zodiac_of_year_number(oriental_zodiac_date_time)

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

    target_year = oriental_zodiac_date_time.year

    # 年の干支は立春をもって切り替わる。
    # 月日がその年の立春を超えていない(月が1月、または、2月かつ立春の日より前の日付)場合、
    # 前年の年の干支番号を求める。

    # その年の立春の日付を得る。
    # 立春は2月の"節"(節気番号 = 0)
    rissyun_date_time = \
      AlmanacSolarTerm.new.get_sekki_date_time(oriental_zodiac_date_time.year, \
                                             oriental_zodiac_date_time.offset, \
                                             0)

    if 1 == oriental_zodiac_date_time.month
      target_year -= 1
    end

    if 2 == oriental_zodiac_date_time.month && \
       rissyun_date_time.day > oriental_zodiac_date_time.day
      target_year -= 1
    end

    # 修正後の年日時から得た年情報をもとに年の干支番号を求める
    # 年の干支は60年で一巡することから、年の干支番号は以下の式で求められる
    # 年の干支番号 = 西暦年数を60で割った余り
    oriental_zodiac_of_year_number = (target_year % 60) - 3

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

    return oriental_zodiac_of_year_number
  end