您当前的位置: 首页 > 

喜欢猪猪

暂无认证

  • 0浏览

    0关注

    228博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

2021-08-09节假日封装类

喜欢猪猪 发布时间:2021-08-09 17:18:27 ,浏览量:0

///     /// 中国阴历及节假日计算     ///     public class ChineseCalendar     {

        private static ChineseLunisolarCalendar clc = new ChineseLunisolarCalendar();         //中国节日汇总         private static List HOLIDAYS = new List()         {             //公历节日             new ChineseHoliday(1,1,"元旦节",false),             new ChineseHoliday(5,1,"劳动节",false),             new ChineseHoliday(10,1,"国庆节",false),             new ChineseHoliday(10,2,"国庆节",false),             new ChineseHoliday(10,3,"国庆节",false),             new ChineseHoliday(10,4,"国庆节",false),             new ChineseHoliday(10,5,"国庆节",false),             new ChineseHoliday(10,6,"国庆节",false),             new ChineseHoliday(10,7,"国庆节",false),             //阴历节日             new ChineseHoliday(12,30,"春节",true),             new ChineseHoliday(1,1,"春节",true),             new ChineseHoliday(1,2,"春节",true),             new ChineseHoliday(1,3,"春节",true),             new ChineseHoliday(1,4,"春节",true),             new ChineseHoliday(1,5,"春节",true),             new ChineseHoliday(1,6,"春节",true),             new ChineseHoliday(5,5,"端午节",true),             new ChineseHoliday(8,15,"中秋节",true),         };         ///         /// 把公历日期转换为阴历日期         /// 这里不直接返回Datetime的原因是阴历有时候2月有30号转换Datetime会出错         ///         ///         ///         public static Tuple ToChineseDate(DateTime date)         {             /** GetLeapMonth(int year)方法返回一个1到13之间的数字,               * 比如:1、该年阴历2月有闰月,则返回3               * 如果:2、该年阴历8月有闰月,则返回9               * GetMonth(DateTime dateTime)返回是当前月份,忽略是否闰月               * 比如:1、该年阴历2月有闰月,2月返回2,闰2月返回3               * 如果:2、该年阴历8月有闰月,8月返回8,闰8月返回9               */             int lyear = clc.GetYear(date);             int lmonth = clc.GetMonth(date);             int lday = clc.GetDayOfMonth(date);             //获取第几个月是闰月,等于0表示本年无闰月             int leapMonth = clc.GetLeapMonth(lyear);             if (leapMonth > 0)             {                 if (leapMonth == lmonth)                 {                     lmonth--;                 }                 else if (lmonth > leapMonth)                 {                     lmonth--;                 }             }             return new Tuple(lyear, lmonth, lday);         }         ///         /// 根据日期获取节日名称,有可能有的时候一天有2个节日         /// item1=阴历节日,item2=阳历节日         ///         /// 公历日期         ///         public static Tuple GetTupleHoliday(DateTime date)         {             string choliday = "";   //阴历、公历节日             string holiday = "";    //公历节日             Tuple cdate = ToChineseDate(date);             //找公历节日             foreach (var item in HOLIDAYS.FindAll(p => p.IsLunar == false))             {                 //月份和日相同则认为是假期                 if (item.Month == date.Month && item.Day == date.Day)                 {                     holiday = item.Name;                     break;                 }             }             //找阴历节日             foreach (var item in HOLIDAYS.FindAll(p => p.IsLunar == true))             {                 if (item.Month == cdate.Item2 && item.Day == cdate.Item3)                 {                     choliday = item.Name;                     break;                 }             }             return new Tuple(choliday, holiday);         }         ///         /// 根据日期获取节日名称,有可能有的时候一天有2个节日         /// item1=阴历节日,item3=阳历假日         ///         /// 公历日期         ///         public static string GetHoliday(DateTime date)         {             string holiday = "";    //节日名称             try             {                 //加这个条件是因为阴历不在这个范围内转换会报错                 if (date.Year >= 1902 && date.Year

关注
打赏
1648795721
查看更多评论
立即登录/注册

微信扫码登录

0.0355s