Lunar.fromYmdHms constructor

Lunar.fromYmdHms(
  1. int lunarYear,
  2. int lunarMonth,
  3. int lunarDay,
  4. int hour,
  5. int minute,
  6. int second,
)

Implementation

Lunar.fromYmdHms(int lunarYear, int lunarMonth, int lunarDay, int hour, int minute, int second) {
  LunarYear y = LunarYear.fromYear(lunarYear);
  LunarMonth? m = y.getMonth(lunarMonth);
  if (null == m) {
    throw 'wrong lunar year $lunarYear month $lunarMonth';
  }
  if (lunarDay < 1) {
    throw 'lunar day must bigger than 0';
  }
  int days = m.getDayCount();
  if (lunarDay > days) {
    throw 'only $days days in lunar year $lunarYear month $lunarMonth';
  }
  _year = lunarYear;
  _month = lunarMonth;
  _day = lunarDay;
  _hour = hour;
  _minute = minute;
  _second = second;
  Solar noon = Solar.fromJulianDay(m.getFirstJulianDay() + lunarDay - 1);
  _solar = Solar.fromYmdHms(
      noon.getYear(), noon.getMonth(), noon.getDay(), hour, minute, second);
  if (noon.getYear() != lunarYear) {
    y = LunarYear.fromYear(noon.getYear());
  }
  _compute(y);
}