在实际开发过程中,我们很多时候会遇到节假日处理的问题。由于前段时间工作需要,所以通过各种平台搜集资料,整理出下面的代码。
备注:主要是给定一个初始日期,然后给定一个时间范围,要求自动跳过节假日以及双休日,最后返回一个工作日的日期,具体代码如下:
/// <summary>
/// 根据指定日期,计算出给定时间间隔的下一个工作日的日期
/// </summary>
/// <param name="dt">给定的日期</param>
/// <param name="n">时间间隔</param>
/// <returns>下一个工作日的日期</returns>
private static DateTime ResultDateTime(DateTime dt, int n)
{
DateTime temp = dt;
int count = 0;
if (temp != null)
{
do
{
temp = temp.AddDays(1);
string strTempDate = temp.ToString().Split(' ')[0];
string[] st = strTempDate.Split('/');
string y = st[0];
string m = "";
string d = "";
if (st[1].Length == 1)
{
m = "0" + st[1];
}
else
{
m = st[1];
}
if (st[2].Length == 1)
{
d = "0" + st[2];
}
else
{
d = st[2];
}
string s = y + m + d;
// 节假日API /
string strUrl = "/api/holiday.php?d=" + s;
Uri uri = new Uri(strUrl);
WebRequest req = WebRequest.Create(uri);
WebResponse resp = req.GetResponse();
StreamReader reader = new StreamReader(resp.GetResponseStream(), Encoding.ASCII);
string strTemp = reader.ReadToEnd();
strTemp = strTemp.Split(':')[1];
// 1 为休息日,2 为节假日
if (strTemp.Contains('0'))
{
count++;
}
} while (count != n);
}
else
{
return Convert.ToDateTime("0000/1/1");
}
return temp;
}