首页 > 技术文章 > C# 阳历与农历互转

nullcodeworld 2021-09-07 16:33 原文

阳历转农历

  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}");

推荐阅读