getDailyStarIndex function
获取日系星索引,包括
三台,八座,恩光,天贵
-
安三台八座
- 由左辅之宫位起初一,顺行至生日安三台。
- 由右弼之宫位起初一,逆行至生日安八座。
-
安恩光天贵
- 由文昌之宫位起初一,顺行至生日再退一步起恩光。
- 由文曲之宫位起初一,顺行至生日再退一步起天贵。
@param solarDateStr 阳历日期 @param timeIndex 时辰索引【0~12】 @returns 三台,八座索引
Implementation
Map<String, int> getDailyStarIndex(
String solarDateStr,
int timeIndex, [
bool? fixLeap,
]) {
final lunar = solar2Lunar(solarDateStr);
final zuoYouIndex = getZuoYouIndex(lunar.lunarMonth);
final changQuIndex = getChangQuIndex(timeIndex);
final dayIndex = fixeLunarDayIndex(lunar.lunarDay, timeIndex);
final zuoIndex = zuoYouIndex["zuoIndex"] ?? -1;
final youIndex = zuoYouIndex["youIndex"] ?? -1;
final quIndex = changQuIndex["quIndex"] ?? -1;
final changIndex = changQuIndex["changIndex"] ?? -1;
var extra = 0;
if (fixLeap == true) {
// 当lunarMonth 为闰月月份并且是后半月时,需要额外加1
final year = LunarYear(lunar.lunarYear);
final leapMonth = year.getLeapMonth();
if (leapMonth > 0 && lunar.lunarMonth == leapMonth && lunar.lunarDay > 15) {
extra = 1;
}
}
final sanTaiIndex = fixIndex(((zuoIndex + dayIndex) % 12) + extra);
final baZuoIndex = fixIndex(((youIndex - dayIndex) % 12) - extra);
final tianGuiIndex = fixIndex((quIndex + dayIndex) % 12 - 1);
final enguangIndex = fixIndex((changIndex + dayIndex) % 12 - 1);
return {
"sanTaiIndex": sanTaiIndex,
"baZuoIndex": baZuoIndex,
"tianGuiIndex": tianGuiIndex,
"enguangIndex": enguangIndex,
};
}