通過API(http://www.easybots.cn/holiday_api.net)獲取返回信息
寫一個接收的反饋的函數IsHoliday

public string IsHoliday(string date) { string url = @"http://www.easybots.cn/api/holiday.php?d="; url = url + date; HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(url); httpRequest.Timeout = 2000; httpRequest.Method = "GET"; HttpWebResponse httpResponse = (HttpWebResponse)httpRequest.GetResponse(); StreamReader sr = new StreamReader(httpResponse.GetResponseStream(), System.Text.Encoding.GetEncoding("gb2312")); string result = sr.ReadToEnd(); result = result.Replace("\r", "").Replace("\n", "").Replace("\t", ""); int status = (int)httpResponse.StatusCode; sr.Close(); return result; }
根據API,可以發現返回的內容有以下三種
{"20130101":"2"}
{"20130103":"1"}
{"20130201":0}
由於我們只需要判斷是否為工作日,因此需要判斷兩種,即為0或者不為0。
為0的情況不存在“”,1和2存在“”,這個要注意
通過最簡單的字段截取方式
substring(s.length-2,1);
判斷截取的字段是否為0,就可以了
然后給datepicker控件寫一個MouseLeave事件

private void DP_MouseLeave(object sender, MouseEventArgs e) { string date = Convert.ToDateTime(DP.Text.ToString()).ToString("yyyyMMdd"); string num = IsHoliday(date).Substring(IsHoliday(date).Length-2, 1); switch(num) { case "0": TB.Text = "工作日"; break; default: TB.Text = "節假日"; break; } }
效果圖如下
當然了,前兩天新聞說的北京11月7日到12日部分單位放假,這個是不支持的。