打表法计算农历错误数据处理之除夕修正
作者:互联网
这几天犯懒,没有心思研究原代码,农历除夕总显示“1月0日“这事又让人讨厌,所以今天采取了个权宜之计,”让“它显示正确除夕。其实也很简单,就是不改变原计算结果,只是让显示正确,因为只有除夕农历不对,所以还是很好改的,加一个判断就行了。
修改的代码如下:
cout <<"计算的除夕农历月份:"<< lunar_date.month << endl;
cout <<"计算的除夕农历日期:"<< lunar_date.day << endl;
if (lunar_date.day == 0) { //判断这天的日期是否为0,错误的农历日期为0.
cout << endl;
cout << "调整后除夕日期:" << endl;
cout << lunar_date.year << "年";
cout << "12月"; //因为就是除夕不对,所在这天一定是农历12月。
day = day - 1; //日期减一天。
Date lunar_date = LuanrDate(year, month, day);//重新计算前一天的农历,必须重新计算。
cout << lunar_date.day+1 << "日" << endl; //计算前一天农历日期后加1得到正确的除夕农历日期。
}
else { //不是除夕的日期是正确的正常计算。
cout << lunar_date.year << "年";
if (lunar_date.leap)
cout << "闰";
cout << lunar_date.month << "月";
cout << lunar_date.day << "日" << endl;
}
其实原理也很简单就是如果计算出当天的农历日期为0的话,月份显示12月,计算出前一天的农历日期,并加1得到除夕那天的日期,29或者30.
这里面有一个坑,就是day=day-1,必须要重新计算农历日期,不然lunar_date.day依然是0.
男,打表法计算农历的”表“已经校对了50年,20-70年,1901-2099一共是200年,我想还是花点时间把它校对完吧,总有人会用得到。
标签:打表法,农历,日期,计算,数据处理,除夕,day 来源: https://blog.csdn.net/kim5659/article/details/113828194