开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 5063|回复: 14
收起左侧

[2019开源大赛(第四届)] 节假日API源码·网上API都收费·所以自己撸了一个

[复制链接]
结帖率:67% (2/3)
发表于 2019-11-25 16:49:28 | 显示全部楼层 |阅读模式   四川省成都市
本帖最后由 zmoli775 于 2019-11-26 10:26 编辑
  1.     /// <summary>
  2.     /// 节假日检测类By:zmoli775
  3.     /// </summary>
  4.     public class JJR
  5.     {
  6.         public List<string[]>
  7.             // 2019年法定节假日
  8.             y2019 = new List<string[]>(),
  9.             // 2019年调休工作日
  10.             w2019 = new List<string[]>(),
  11.             // 2020年法定节假日
  12.             y2020 = new List<string[]>(),
  13.             // 2020年调休工作日
  14.             w2020 = new List<string[]>();
  15.         /// <summary>
  16.         /// 节假日检测(仅支持判断2019年、2020年)
  17.         /// </summary>
  18.         public JJR()
  19.         {
  20.             /*2019年有效数据*/
  21.             y2019.Add(new string[] { "20181230", "20190101" }); // 元旦
  22.             y2019.Add(new string[] { "20190204", "20190210" }); // 春节
  23.             y2019.Add(new string[] { "20190405", "20190407" }); // 清明
  24.             y2019.Add(new string[] { "20190501", "20190504" }); // 劳动
  25.             y2019.Add(new string[] { "20190607", "20190609" }); // 端午
  26.             y2019.Add(new string[] { "20190913", "20190915" }); // 中秋
  27.             y2019.Add(new string[] { "20191001", "20191007" }); // 国庆
  28.             // 调整工作日
  29.             w2019.Add(new string[] { "20181229", "20190202", "20190203", "20190428", "20190505", "20190929", "20191012" });

  30.             /*2020年有效数据*/
  31.             y2020.Add(new string[] { "20200101", "20200101" }); // 元旦
  32.             y2020.Add(new string[] { "20200124", "20200130" }); // 春节
  33.             y2020.Add(new string[] { "20200404", "20200406" }); // 清明
  34.             y2020.Add(new string[] { "20200501", "20200505" }); // 劳动
  35.             y2020.Add(new string[] { "20200625", "20200627" }); // 端午
  36.             y2020.Add(new string[] { "20201001", "20201008" }); // 中秋
  37.             y2020.Add(new string[] { "20201001", "20201008" }); // 国庆
  38.             // 调整工作日
  39.             w2020.Add(new string[] { "20200119", "20200201", "20200426", "20200509", "20200628", "20200927", "20201010" });
  40.         }
  41.         /// <summary>
  42.         /// 日期计算临时变量
  43.         /// </summary>
  44.         private DateTime temp;
  45.         /// <summary>
  46.         /// 检测日期状态(3:节假日、2:休息日、1:工作日、0:错误)
  47.         /// </summary>
  48.         /// <param name="rq">日期(20191231)</param>
  49.         /// <returns>返回状态码(3:节假日、2:休息日、1:工作日、0:错误)</returns>
  50.         public int CheckForHolidays(string rq)
  51.         {
  52.             temp = Str2dt(rq);

  53.             if ((temp.Year == 2019 || temp.Year == 2020) && temp != new DateTime())
  54.             {
  55.                 return Determine();
  56.             }
  57.             else
  58.             {
  59.                 /*Console.WriteLine("Error");*/
  60.                 return 0;
  61.             }
  62.         }
  63.         /// <summary>
  64.         /// 检查法定节假日和调休工作日
  65.         /// </summary>
  66.         /// <param name="y">法定节假日</param>
  67.         /// <param name="w">调休工作日</param>
  68.         /// <returns>返回状态码(3:节假日、1:工作日、0:错误)</returns>
  69.         private int Check(List<string[]> y, List<string[]> w)
  70.         {
  71.             // 法定节假日检查
  72.             foreach (var i in y)
  73.             {
  74.                 if (temp >= Str2dt(i[0]) && temp <= Str2dt(i[1]))
  75.                 {
  76.                     return 3;
  77.                 }
  78.             }

  79.             // 调休工作日检查
  80.             foreach (string[] i in w)
  81.             {
  82.                 foreach (var item in i)
  83.                 {
  84.                     if (temp == Str2dt(item))
  85.                     {
  86.                         return 1;
  87.                     }
  88.                 }
  89.             }
  90.             return 0;
  91.         }
  92.         private int Determine()
  93.         {
  94.             int type = 0;

  95.             switch (temp.Year)
  96.             {
  97.                 // 2019年
  98.                 case 2019:
  99.                     type = Check(y2019, w2019); break;

  100.                 // 2020年
  101.                 case 2020:
  102.                     type = Check(y2020, w2020); break;
  103.             }

  104.             if (type == 0)
  105.             {
  106.                 int week = Convert.ToInt32(temp.DayOfWeek);

  107.                 if (6 == week || 0 == week) // 类型为0`检测是否为星期六、星期日
  108.                 {
  109.                     type = 2; // 休息日
  110.                 }
  111.                 else
  112.                 {
  113.                     type = 1; // 工作日
  114.                 }
  115.             }
  116.             /*
  117.             switch (type)
  118.             {
  119.                 case 3: Console.WriteLine("节假日"); break;
  120.                 case 2: Console.WriteLine("休息日"); break;
  121.                 case 1: Console.WriteLine("工作日"); break;
  122.             }
  123.             */
  124.             return type;
  125.         }
  126.         /// <summary>
  127.         /// string转换DateTime
  128.         /// </summary>
  129.         public static DateTime Str2dt(string d)
  130.         {
  131.             try
  132.             {
  133.                 return DateTime.ParseExact(d, "yyyyMMdd", CultureInfo.CreateSpecificCulture("zh-CN"));
  134.             }
  135.             catch
  136.             {
  137.                 return new DateTime();
  138.             }
  139.         }
  140.     }

复制代码



评分

参与人数 1精币 +1 收起 理由
alanyang001 + 1 支持开源~!感谢分享

查看全部评分

结帖率:100% (1/1)

签到天数: 2 天

发表于 2024-7-14 22:19:07 | 显示全部楼层   广东省深圳市
还不会用
回复 支持 反对

使用道具 举报

结帖率:100% (2/2)
发表于 2023-5-2 20:40:00 | 显示全部楼层   上海市上海市
新技能已get√
回复 支持 反对

使用道具 举报

结帖率:0% (0/2)
发表于 2019-12-7 14:10:43 | 显示全部楼层   广东省东莞市
这个不错,先支持下
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)
发表于 2019-12-5 09:26:46 | 显示全部楼层   广东省深圳市
这个不错,先支持下
回复 支持 反对

使用道具 举报

发表于 2019-12-4 10:08:50 | 显示全部楼层   山东省青岛市
只有api啊?
回复 支持 反对

使用道具 举报

结帖率:100% (9/9)

签到天数: 1 天

发表于 2019-11-28 12:11:08 | 显示全部楼层   广东省江门市
走错片场
回复 支持 反对

使用道具 举报

结帖率:100% (2/2)

签到天数: 3 天

发表于 2019-11-26 16:58:34 | 显示全部楼层   江苏省苏州市
6666666666
回复 支持 反对

使用道具 举报

结帖率:100% (3/3)
发表于 2019-11-26 12:22:51 | 显示全部楼层   江西省南昌市
回复 支持 反对

使用道具 举报

结帖率:80% (57/71)

签到天数: 12 天

发表于 2019-11-26 09:04:42 | 显示全部楼层   广东省深圳市
我好像走错场了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表