getMonthlyStarIndex function

Map<String, int> getMonthlyStarIndex(
  1. String solarDateStr,
  2. int timeIndex, [
  3. bool? fixLeap
])

获取以月份索引为基准的星耀索引,包括解神,天姚,天刑,阴煞,天月,天巫 解神分为年解和月解,月解作用更加直接快速,年解稍迟钝,且作用力没有月解那么大

  • 月解(按生月)

    • 正二在申三四在戍,五六在子七八在寅,九十月坐於辰宫,十一十二在午宫。
  • 安天刑天姚(三合必见)

    • 天刑从酉起正月,顺至生月便安之。天姚丑宫起正月,顺到生月即停留。
  • 安阴煞

    • 正七月在寅,二八月在子,三九月在戍,四十月在申,五十一在午,六十二在辰。
  • 安天月

    • 一犬二蛇三在龙,四虎五羊六兔宫。七猪八羊九在虎,十马冬犬腊寅中。
  • 安天巫

    • 正五九月在巳,二六十月在申,三七十一在寅,四八十二在亥。

@param solarDate 阳历日期 @param timeIndex 时辰序号 @param fixLeap 是否修复闰月,假如当月不是闰月则不生效 @returns

Implementation

Map<String, int> getMonthlyStarIndex(
  String solarDateStr,
  int timeIndex, [
  bool? fixLeap,
]) {
  int monthIndex = fixLunarMonthIndex(solarDateStr, timeIndex, fixLeap);
  final earthlyBranch =
      [
        "shenEarthly",
        "xuEarthly",
        "ziEarthly",
        "yinEarthly",
        "chenEarthly",
        "wuEarthly",
      ][(monthIndex ~/ 2).floor()];
  int jieShenIndex = fixIndex(
    fixEarthlyBranchIndex(getMyEarthlyBranchNameFrom(earthlyBranch)),
  );

  int tianYaoIndex = fixIndex(
    fixEarthlyBranchIndex(EarthlyBranchName.chouEarthly) + monthIndex,
  );
  int tianXingIndex = fixIndex(
    fixEarthlyBranchIndex(EarthlyBranchName.youEarthly) + monthIndex,
  );
  final yinShaEarthlyBranch =
      [
        "yinEarthly",
        "ziEarthly",
        "xuEarthly",
        "shenEarthly",
        "wuEarthly",
        "chenEarthly",
      ][monthIndex % 6];
  int yinShaIndex = fixIndex(
    fixEarthlyBranchIndex(getMyEarthlyBranchNameFrom(yinShaEarthlyBranch)),
  );

  int tianYueIndex = fixIndex(
    fixEarthlyBranchIndex(
      getMyEarthlyBranchNameFrom(
        [
          'xuEarthly',
          'siEarthly',
          'chenEarthly',
          'yinEarthly',
          'weiEarthly',
          'maoEarthly',
          'haiEarthly',
          'weiEarthly',
          'yinEarthly',
          'wuEarthly',
          'xuEarthly',
          'yinEarthly',
        ][monthIndex],
      ),
    ),
  );
  int tianWuIndex = fixIndex(
    fixEarthlyBranchIndex(
      getMyEarthlyBranchNameFrom(
        ['siEarthly', 'shenEarthly', 'yinEarthly', 'haiEarthly'][monthIndex %
            4],
      ),
    ),
  );

  return {
    'yueJieIndex': jieShenIndex,
    'tianYaoIndex': tianYaoIndex,
    'tianXingIndex': tianXingIndex,
    'yinShaIndex': yinShaIndex,
    'tianYueIndex': tianYueIndex,
    'tianWuIndex': tianWuIndex,
  };
}