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 = arrTeari;

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.Rowsk"ShortDay".ToString() == date)

{

//法定节假日

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

{

table.Rowsk"Code" = 1;

}

//节假日调休补班

else

{

table.Rowsk"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.Rowsj"ShortDay", table.Rowsj"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 "";

}

}

}

相关推荐
fqbqrr8 小时前
2606C++,C++构的多态
开发语言·c++
biter down9 小时前
从 0 到 1 搭建 Python 接口自动化测试框架(博客系统实战)
开发语言·python
threelab10 小时前
Three.js 物理模拟着色器 | 三维可视化 / AI 提示词
开发语言·前端·javascript·人工智能·3d·着色器
武器大师7210 小时前
lv_binding_js 代码解读
开发语言·javascript·ecmascript
不知名的老吴10 小时前
线程的生命周期之线程“插队“
java·开发语言·python
kaikaile199511 小时前
数字全息图处理系统(C# 实现)
开发语言·c#
秋912 小时前
Go语言(Golang)开发工程师全景解析:岗位职责·语言优势与使用场景·各城市薪资·发展前景·高考志愿填报(2026版)
开发语言·golang·高考
huangdong_13 小时前
1688商品图片采集技术解析:登录态处理与SKU图自动分类
开发语言
chase_my_dream13 小时前
C++ + SLAM 高频面试问题整理
开发语言·c++·面试