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 changQuIndex = getChangQuIndex(timeIndex);
final dayIndex = fixeLunarDayIndex(lunar.lunarDay, timeIndex);
final monthIndex = fixLunarMonthIndex(solarDateStr, timeIndex, fixLeap);
final zuoYouIndex = getZuoYouIndex(monthIndex + 1);
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));
final baZuoIndex = fixIndex(((youIndex - dayIndex) % 12));
final enguangIndex = fixIndex((changIndex + dayIndex) % 12 - 1);
final tianGuiIndex = fixIndex((quIndex + dayIndex) % 12 - 1);
return {
"sanTaiIndex": sanTaiIndex,
"baZuoIndex": baZuoIndex,
"tianGuiIndex": tianGuiIndex,
"enguangIndex": enguangIndex,
};
}