打表法計算農曆錯誤資料處理之除夕修正
阿新 • • 發佈:2021-02-17
這幾天犯懶,沒有心思研究原始碼,農曆除夕總顯示“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年,我想還是花點時間把它校對完吧,總有人會用得到。