getHeavenlyStemAndEarthlyBranchSolarDate function

HeavenlyStemAndEarthlyBranchDate getHeavenlyStemAndEarthlyBranchSolarDate(
  1. String dateStr,
  2. int timeIndex,
  3. DivideType? option
)

将阳历转化为干支纪年

@param dateStr 公历日期 YYYY-MM-DD @param timeIndex 时辰索引【0~12】 @returns HeavenlyStemAndEarthlyBranchResult

Implementation

HeavenlyStemAndEarthlyBranchDate getHeavenlyStemAndEarthlyBranchSolarDate(
  String dateStr,
  int timeIndex,
  DivideType? option,
) {
  option ??= DivideType.exact;
  final dates = parseDate(dateStr);
  final year = dates[0];
  final month = dates[1];
  final day = dates[2];
  var solar = Solar.fromYmdHms(
    year,
    month,
    day,
    max(timeIndex * 2 - 1, 0),
    30,
    0,
  );
  var lunar = solar.getLunar();
  var yearlyGan =
      option == DivideType.normal
          ? lunar.getYearGan()
          : lunar.getYearGanByLiChun();
  var yearlyZhi =
      option == DivideType.normal
          ? lunar.getYearZhi()
          : lunar.getYearZhiByLiChun();

  var yearly = [yearlyGan, yearlyZhi];
  var monthly = [lunar.getMonthGanExact(), lunar.getMonthZhiExact()];
  var daily = [lunar.getDayGanExact(), lunar.getDayZhiExact()];
  var hourly = [lunar.getTimeGan(), lunar.getTimeZhi()];
  return HeavenlyStemAndEarthlyBranchDate(
    yearly: yearly,
    monthly: monthly,
    daily: daily,
    hourly: hourly,
  );
}