getMonthlyStarIndex function
获取以月份索引为基准的星耀索引,包括解神,天姚,天刑,阴煞,天月,天巫 解神分为年解和月解,月解作用更加直接快速,年解稍迟钝,且作用力没有月解那么大
-
月解(按生月)
- 正二在申三四在戍,五六在子七八在寅,九十月坐於辰宫,十一十二在午宫。
-
安天刑天姚(三合必见)
- 天刑从酉起正月,顺至生月便安之。天姚丑宫起正月,顺到生月即停留。
-
安阴煞
- 正七月在寅,二八月在子,三九月在戍,四十月在申,五十一在午,六十二在辰。
-
安天月
- 一犬二蛇三在龙,四虎五羊六兔宫。七猪八羊九在虎,十马冬犬腊寅中。
-
安天巫
- 正五九月在巳,二六十月在申,三七十一在寅,四八十二在亥。
@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,
};
}