先介绍下本人的基本情况,本人今年刚毕业,坐标上海,.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