根據節假日表分析當前日期是否屬於節假日配置表的時間以及判定當前日期是否屬於雙休日
首先建一張節假日表PricingHoliday ID 節假日時間 HDate 是否工作日 HType 2表示不上班 非工作日, 1表示正常上班 工作日
判定代碼:

private string _strWorkingDayAM = "00:00";//工作時間 private string _strWorkingDayPM = "23:59"; private string _strRestDay = "6,7";//周幾休息日 周六周日為 6,7 private TimeSpan dspWorkingDayAM;//工作時間 private TimeSpan dspWorkingDayPM;//下午工作時間 clsArrayList myArrayList; /// <summary> /// 是否周休日 /// </summary> /// <returns></returns> private bool m_IsWorkingDay() { string strWeekNow = this.m_GetWeekNow();//當前周幾 //判斷是否休息日 for (int i = 0; i < myArrayList.p_Count; i++) { if (strWeekNow == myArrayList.m_GetItem(i)) { return false; } } //判斷當前時間是否在工作時間段內 TimeSpan dspNow = DateTime.Now.TimeOfDay; //string date = DateTime.Now.ToShortDateString(); if (dspNow > dspWorkingDayAM && dspNow < dspWorkingDayPM) { return true;//是在工作時間內 } return false;//不是在工作時間內 } /// <summary> /// 初始化默認值 /// </summary> private void m_InitWorkingDay() { dspWorkingDayAM = DateTime.Parse(_strWorkingDayAM).TimeOfDay; dspWorkingDayPM = DateTime.Parse(_strWorkingDayPM).TimeOfDay; myArrayList = new clsArrayList(_strRestDay, ','); } /// <summary> /// 獲取當前周幾 /// </summary> /// <returns></returns> private string m_GetWeekNow() { string strWeek = DateTime.Now.DayOfWeek.ToString(); switch (strWeek) { case "Monday": return "1"; case "Tuesday": return "2"; case "Wednesday": return "3"; case "Thursday": return "4"; case "Friday": return "5"; case "Saturday": return "6"; case "Sunday": return "7"; } return "0"; } /// <summary> /// 初始化1是工作日 2 是非工作日 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void FrmManagement_Load(object sender, EventArgs e) { this.m_InitWorkingDay(); bool bol = this.m_IsWorkingDay(); int resultYesOrNo = GetIsWorkDate(); //雙休日和工作日判斷 if ((bol.ToString().Equals(true)) && resultYesOrNo == 1) { this.labelX1.Text = "今天是工作日,非節假日"; } else if (resultYesOrNo == 1) { this.labelX1.Text = "今天是工作日,非節假日"; } else if ((bol.Equals(true))) { this.labelX1.Text = "今天是工作日"; } else { this.labelX1.Text = "今天是節假日非工作日"; } } /// <summary> /// 獲取是否工作日的類型 1工作日 2 非工作日 /// </summary> /// <returns></returns> public int GetIsWorkDate() { string date = DateTime.Now.ToString("yyyy-MM-dd"); string sqlWork = "SELECT HType FROM PricingHoliday WHERE HDate='" + date + "'"; int iresult = 0; string htype = null; try { DataTable dt = helper.Selectinfo(sqlWork); for (int i = 0; i < dt.Rows.Count; i++) { //從數據庫得到字段的值 htype = dt.Rows[0]["HType"].ToString(); } if (htype=="1") { return iresult=1; } if (htype == "2") { return iresult =2; } } catch { } return iresult; }
使用類:

public class clsArrayList { public int p_Count = -1; //數據組數 private string[] myArray1; //一維矩陣 private string[,] myArray2; //二維矩陣 /// <summary> /// 一維字符串分隔,初始化.例: clsArrayList myArray1List=new clsArrayList("1;2;3;4;5",';') /// </summary> /// <param name="strStringSource"></param> /// <remarks></remarks> public clsArrayList(string strStringSource, char charSepartor) { try { myArray1 = strStringSource.Split(charSepartor);//截取 p_Count = myArray1.Length; } catch (Exception ex) { clsLogHelper.m_CreateErrorLogTxt("clsArrayList(" + strStringSource + " , " + charSepartor + ")", "", ex.Message.ToString()); } } /// <summary> /// 二維字符串分隔,初始化. 例: clsArrayList myArray1List=new clsArrayList("1,A;2,B;3,C;4,D;5,E" , ';' , ',') /// </summary> /// <param name="strStringSource"></param> /// <param name="strColumnSepartor"></param> /// <param name="strRowSepartor"></param> /// <remarks></remarks> public clsArrayList(string strStringSource, char charColumnSepartor, char charRowSepartor) { try { string[] strColumn; //第一次截取 ";" string[] strRow; //第二次截取 "," strColumn = strStringSource.Split(charColumnSepartor);//第一次截取 p_Count = strColumn.Length; myArray2 = new string[p_Count, 2]; for (int i = 0; i <= p_Count - 1; i++) //將數據保存 數組 myArray1 中 { strRow = strColumn[i].Split(charRowSepartor);//第二次截取 myArray2[i, 0] = strRow[0]; myArray2[i, 1] = strRow[1]; } } catch (Exception ex) { clsLogHelper.m_CreateErrorLogTxt("clsArrayList(" + strStringSource + " , " + charColumnSepartor + " , " + charRowSepartor + ")", "", ex.Message.ToString()); } } /// <summary> /// 一維字符串,取值 /// </summary> /// <param name="intIndex"></param> /// <returns></returns> public string m_GetItem(int intIndex) { if (myArray1 == null) { return ""; } if (p_Count == -1) { return ""; } if (intIndex > p_Count - 1) { return ""; } else { return myArray1[intIndex]; } } /// <summary> /// 二維字符串,取值 /// </summary> /// <param name="intKeyIndex"></param> /// <param name="intValueIndex"></param> /// <returns></returns> /// <remarks></remarks> public string m_GetItem(int intKeyIndex, int intValueIndex) { if (myArray2 == null) { return ""; } if (p_Count == -1) { return ""; } if (intKeyIndex > p_Count - 1 || intValueIndex > 1)//Value為列,二維 { return ""; } else { return myArray2[intKeyIndex, intValueIndex]; } } /// <summary> /// 二維字符串,通過Value 獲取Key ,例: m_GetKey("1") /// </summary> /// <param name="strValue"></param> /// <returns></returns> /// <remarks></remarks> public string m_GetKey(string strValue) { try { if (myArray2 == null) { return ""; } if (p_Count == -1) { return ""; } for (int i = 0; i <= p_Count - 1; i++) //通過value查找key { if (myArray2[i, 1] == strValue) { return myArray2[i, 0]; //返回key的值 } } return ""; } catch (Exception ex) { clsLogHelper.m_CreateErrorLogTxt("clsArrayList(" + strValue + ")", "", ex.Message.ToString()); return ""; } } /// <summary> /// 二維字符串,通過Key 獲取Value /// </summary> /// <param name="strKey"></param> /// <returns></returns> /// <remarks></remarks> public string m_GetValue(string strKey) { try { if (myArray2 == null) { return ""; } if (p_Count == -1) { return ""; } for (int i = 0; i <= p_Count - 1; i++) //通過key查找value { if (myArray2[i, 0] == strKey) { return myArray2[i, 1]; //返回value的值 } } return ""; } catch (Exception ex) { clsLogHelper.m_CreateErrorLogTxt("m_GetValue(" + strKey + ")", "", ex.Message.ToString()); return ""; } }