100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > C# 实现阴历阳历互转

C# 实现阴历阳历互转

时间:2021-10-08 16:59:57

相关推荐

C# 实现阴历阳历互转

本章实现

阳历(公历)转阴历(农历),阴历(农历)转阳历(公历)

一、准备工作

需引入using System.Globalization;

二、代码实现

1.阳历转阴历

/// <summary>/// 阳历转阴历/// </summary>/// <param name="time">-08-31</param>/// <returns>-07-24</returns>public static string SolarToLunar(this string time){ChineseLunisolarCalendar cncld = new ChineseLunisolarCalendar();DateTime dt = DateTime.Parse(time);int year = cncld.GetYear(dt);int flag = cncld.GetLeapMonth(year);int month = flag > 0 ? cncld.GetMonth(dt) - 1 : cncld.GetMonth(dt);int day = cncld.GetDayOfMonth(dt);return $"{year}-{(month.ToString().Length == 1 ? "0" + month : month + "")}-{(day.ToString().Length == 1 ? "0" + day : day + "")}";}

2.阴历转阳历

/// <summary>/// 阴历转阳历/// </summary>/// <param name="time">-07-24</param>/// <returns>-08-31</returns>public static string LunarToSolar(this string time){ChineseLunisolarCalendar cncld = new ChineseLunisolarCalendar();int year = Convert.ToInt32(time.Split('-')[0]);int month = Convert.ToInt32(time.Split('-')[1]);int day = Convert.ToInt32(time.Split('-')[2]);int flag = cncld.GetLeapMonth(year);DateTime dtnl = cncld.ToDateTime(year, month, day, 0, 0, 0, 0);dtnl = flag > 0 ? dtnl.AddMonths(1) : dtnl;return dtnl.ToString("yyyy-MM-dd");}

三、程序调用

// 阳历转阴历string lunarStr = "-08-31".SolarToLunar(); // 输出 -07-24// 阴历转阴历string solarStr = lunarStr.LunarToSolar(); // 输出 -08-31

四、结束语

本次的分享结束,后续不定时更新,再见!!!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。