C#实现工作日和休息日(包括法定节假日)的计算

本文介绍了作者作为.NET新手,在开发中遇到需要计算工作日的问题,为避免依赖外部接口,选择自行实现该功能。文章详细阐述了开发背景、工作日的定义,并提供了使用C#编写的代码示例,通过解析JSON配置法定节假日来计算工作日。
摘要由CSDN通过智能技术生成

  先介绍下本人的基本情况,本人今年刚毕业,坐标上海,.NET 菜鸟一枚,第一次写博客,有意见欢迎大家提出,大神轻喷!

  好了,废话不多说,开门见山。

一、开发背景:

  最近在公司开发的系统中,需要计算工作日,就是给出一个采购周期(n天),我需要计算出在n个工作日之后的日期。开始准备去调接口(ps:找了半天发现没有太合适的,还有吐槽下国家政府单位都没有官方接口的),但是负责这个项目的大佬说,万一别个的接口崩了,会影响我们自己的系统的正常运行,自己开发还是稳点,我就写了这个功能,特此记录下实现这个功能的思路。

二、定义:

  工作日想必大家都知道,就是除去周末和每年国务院颁布的节假日放假安排(例如:2017年部分节假日安排),其他就都是工作日(对了,差点忘记补班,这也算是工作日哦)。

三、实践:

  “废话”说的够多了,下面撸起袖子开干吧,代码都写了注释。

  提供了两个公共方法,先给大家看下简单测试的运行结果:

    (1).根据传入的工作日天数,获得计算后的日期

    

    (2).根据传入的时间,计算工作日天数;

    

  具体代码:

  1 public class HolidayHelper
  2     {
  3         #region 字段属性
  4         private static object _syncObj = new object();
  5         private static HolidayHelper _instance { get; set; }
  6         private static List<DateModel> cacheDateList { get; set; }
  7         private HolidayHelper() { }
  8         /// <summary>
  9         /// 获得单例对象,使用懒汉式(双重锁定)
 10         /// </summary>
 11         /// <returns></returns>
 12         public static HolidayHelper GetInstance()
 13         {
 14             if (_instance == null)
 15             {
 16                 lock (_syncObj)
 17                 {
 18                     if (_instance == null)
 19                     {
 20                         _instance = new HolidayHelper();
 21                     }
 22                 }
 23             }
 24             return _instance;
 25         }
 26         #endregion
 27 
 28         #region 私有方法
 29         /// <summary>
 30         /// 读取文件
 31         /// </summary>
 32         /// <param name="filePath"></param>
 33         /// <returns></returns>
 34         private string GetFileContent(string filePath)
 35         {
 36             string result = "";
 37             if (File.Exists(filePath))
 38             {
 39                 result = File.ReadAllText(filePath);
 40             }
 41             return result;
 42         }
 43         /// <summary>
 44         /// 获取配置的Json文件
 45         /// </summary>
 46         /// <returns>经过反序列化之后的对象集合</returns>
 47         private List<DateModel> GetConfigList()
 48
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值