getFu method
Implementation
Fu? getFu() {
Solar current = Solar.fromYmd(_solar!.getYear(), _solar!.getMonth(), _solar!.getDay());
Solar xiaZhi = getJieQiSolar(I18n.getMessage('jq.xiaZhi'));
Solar liQiu = getJieQiSolar(I18n.getMessage('jq.liQiu'));
Solar start = Solar.fromYmd(xiaZhi.getYear(), xiaZhi.getMonth(), xiaZhi.getDay());
// 第1个庚日
int add = 6 - xiaZhi.getLunar().getDayGanIndex();
if (add < 0) {
add += 10;
}
// 第3个庚日,即初伏第1天
add += 20;
start = start.next(add);
// 初伏以前
if (current.isBefore(start)) {
return null;
}
int days = current.subtract(start);
if (days < 10) {
return new Fu('初伏', days + 1);
}
// 第4个庚日,中伏第1天
start = start.next(10);
days = current.subtract(start);
if (days < 10) {
return new Fu('中伏', days + 1);
}
// 第5个庚日,中伏第11天或末伏第1天
start = start.next(10);
days = current.subtract(start);
Solar liQiuSolar = Solar.fromYmd(liQiu.getYear(), liQiu.getMonth(), liQiu.getDay());
// 末伏
if (!liQiuSolar.isAfter(start)) {
if (days < 10) {
return Fu('末伏', days + 1);
}
} else {
// 中伏
if (days < 10) {
return Fu('中伏', days + 11);
}
// 末伏第1天
start = start.next(10);
days = current.subtract(start);
if (days < 10) {
return Fu('末伏', days + 1);
}
}
return null;
}