根據公歷(陽歷)日期計算對應的農歷(陰歷)日期,尋找規則或公式。
陰陽歷算法
農歷為**太陰太陽合曆**,核心難點:
ChineseCalendar (C#), lunar-cpp (C++), jdk8+ java.time.chrono.ChineseChronology (Java)。struct LunarInfo { int gregorianNewYear; int leapMonth; int leapDays; int monthDays[12]; };
LunarInfo g_lunarTable[200] = { /* 填入 1900-2100 年數據 */ };
bool SolarToLunar(int y, int m, int d, out int ly, out int lm, out int ld, out bool leap) {
// 1. 計算與基準日 (1900/1/31) 的天數差
// 2. 查表找到農歷年
// 3. 遍歷月天數找到農歷月日
// 4. 處理閏月
return true;
}
**生產環境直接用成熟開源庫,查表法次之,切勿手算天文公式。**