陽歷轉農歷
System.Globalization
命名空間下提供了專門用於計算中國農歷的ChineseLunisolarCalendar
類,從EastAsianLunisolarCalendar
派生而來。
ChineseLunisolarCalendar cncld = new ChineseLunisolarCalendar();
DateTime dt = new DateTime(2020, 12, 15);
int year = cncld.GetYear(dt);
// 是否有閏月,返回正整數(2020年閏4月,返回值為5)
int flag = cncld.GetLeapMonth(year);
int month = flag > 0 ? cncld.GetMonth(dt) - 1 : cncld.GetMonth(dt);
int day = cncld.GetDayOfMonth(dt);
Console.WriteLine($"{dt:d},農歷:{year}年{month}月{day}日");
農歷轉陽歷
DateTime dtnl = cncld.ToDateTime(year, month, day, 0, 0, 0, 0);
dtnl = flag > 0 ? dtnl.AddMonths(1) : dtnl;
Console.WriteLine($"{dtnl}");