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 "";

}

}

}

相关推荐
JustCheng10 小时前
Dispacher(1/2)深入解析-详细使用
c#
Interview Aid11215 小时前
TikTok OA 四题分享|半小时内 AC,题目基本都是实现题
java·开发语言·算法·面试·职场和发展
CoderIsArt1 天前
C#中UI 线程与 Dispatcher
开发语言·ui·c#
AI情绪识别开源1 天前
检信 ALLEMOTION OS 加密打包可执行程序 — 全面测试报告版本: v1.3功能测试 / 性能测试 /
开发语言·数据结构·人工智能·功能测试
「QT(C++)开发工程师」1 天前
C++ auto 用法详解
开发语言·c++
OPEN-F1 天前
C++STL教程:容器适配器与实用工具
开发语言·c++
yaoxin5211231 天前
507. Java 反射 - 在 BeanFactory 中实现依赖注入
java·开发语言
OPEN-F1 天前
C++模板教程:变参模板、折叠表达式与SFINAE
java·开发语言·c++
有点。1 天前
C++二叉搜索树进阶
开发语言·c++