C#获取每年节假日

备注:

TYPE 类型(正常工作日:0, 法定节假日:1, 节假日调休补班:2,休息日: 3)

using Newtonsoft.Json;

using Newtonsoft.Json.Linq;

using System;

using System.Collections.Generic;

using System.Data;

using System.IO;

using System.Linq;

using System.Net;

using System.Text;

using System.Threading.Tasks;

namespace Test.Common

{

//节假日

public class Holiday

{

public void main(string yearNow)

{

string[] arrTear = new string[] { yearNow };

for (int i = 0; i < arrTear.Length; i++)

{

DataTable table = new DataTable();

table.Columns.Add("ShortDay");

table.Columns.Add("Code");

string year = arrTear[i];

string startDay = year + "-01-01";

string endDay = year + "-12-31";

//获取相差几天

int days = DateDiff(Convert.ToDateTime(startDay), Convert.ToDateTime(endDay)) + 1;

//添加整一年的数据并区分出工作日与休息日

for (int j = 0; j < days; j++)

{

DataRow dr = table.NewRow();

dr["ShortDay"] = Convert.ToDateTime(startDay).AddDays(j).ToString("yyyyMMdd");

//判断是否未工作日

string temp = GetWeekDes((int)Convert.ToDateTime(startDay).AddDays(j).DayOfWeek);

if (temp == "星期日" || temp == "星期六")

{

dr["Code"] = 3;

}

else

{

dr["Code"] = 0;

}

table.Rows.Add(dr);

}

//获取改年的节假日信息

string result = "";

try

{

HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://timor.tech/api/holiday/year/" + year + "/");

req.Method = "GET";

req.ContentType = "application/x-www-form-urlencoded";

HttpWebResponse resp = (HttpWebResponse)req.GetResponse();

Stream streamNr = resp.GetResponseStream();

//获取响应内容

using (StreamReader reader = new StreamReader(streamNr, Encoding.UTF8))

{

result = reader.ReadToEnd();

}

}

catch (Exception e)

{

}

if (result != "")

{

JObject jo = (JObject)JsonConvert.DeserializeObject(result);

JObject jo_T = (JObject)JsonConvert.DeserializeObject(jo["holiday"].ToString());

foreach (var item in jo_T)

{

string key = item.Key;

JObject jo_T2 = (JObject)JsonConvert.DeserializeObject(item.Value.ToString());

string holiday = jo_T2["holiday"].ToString();

string dateT = jo_T2["date"].ToString();

string date = Convert.ToDateTime(dateT).ToString("yyyyMMdd");

for (int k = 0; k < table.Rows.Count; k++)

{

if (table.Rows[k]["ShortDay"].ToString() == date)

{

//法定节假日

if (holiday == "True" || holiday == "true")

{

table.Rows[k]["Code"] = 1;

}

//节假日调休补班

else

{

table.Rows[k]["Code"] = 2;

}

break;

}

}

}

}

string txt = "";

//添加记录

for (int j = 0; j < table.Rows.Count; j++)

{

string sql = "INSERT INTO HOLIDAY(SHORT_DATE,TYPE) values('{0}','{1}');";

sql = string.Format(sql, table.Rows[j]["ShortDay"], table.Rows[j]["Code"]);

txt += sql;

}

}

}

/// <summary>

/// 获取日期天数差

/// </summary>

/// <param name="dateStart"></param>

/// <param name="dateEnd"></param>

/// <returns></returns>

private int DateDiff(DateTime dateStart, DateTime dateEnd)

{

DateTime start = Convert.ToDateTime(dateStart.ToShortDateString());

DateTime end = Convert.ToDateTime(dateEnd.ToShortDateString());

TimeSpan sp = end.Subtract(start);

return sp.Days;

}

private string GetWeekDes(int index)

{

switch (index)

{

case 0: return "星期日";

case 1: return "星期一";

case 2: return "星期二";

case 3: return "星期三";

case 4: return "星期四";

case 5: return "星期五";

case 6: return "星期六";

}

return "";

}

}

}

相关推荐
Ray Liang3 小时前
用六边形架构与整洁架构对比是伪命题?
java·python·c#·架构设计
Scout-leaf3 天前
WPF新手村教程(三)—— 路由事件
c#·wpf
用户298698530143 天前
程序员效率工具:Spire.Doc如何助你一键搞定Word表格排版
后端·c#·.net
mudtools4 天前
搭建一套.net下能落地的飞书考勤系统
后端·c#·.net
玩泥巴的5 天前
搭建一套.net下能落地的飞书考勤系统
c#·.net·二次开发·飞书
唐宋元明清21885 天前
.NET 本地Db数据库-技术方案选型
windows·c#
郑州光合科技余经理5 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
lindexi5 天前
dotnet DirectX 通过可等待交换链降低输入渲染延迟
c#·directx·d2d·direct2d·vortice
feifeigo1235 天前
matlab画图工具
开发语言·matlab
dustcell.5 天前
haproxy七层代理
java·开发语言·前端