阳历转农历
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}");