获取网络时间
2015-06-30 12:42
507 查看
#region 获取网络时间 ///<summary> /// 获取中国国家授时中心网络服务器时间发布的当前时间 ///</summary> ///<returns></returns> publicstatic DateTime GetChineseDateTime() { DateTime res = DateTime.MinValue; try { string url ="http://www.time.ac.cn/stime.asp"; HttpHelper helper =new HttpHelper(); helper.Encoding = Encoding.Default; string html = helper.GetHtml(url); string patDt =@"\d{4}年\d{1,2}月\d{1,2}日"; string patHr =@"hrs\s+=\s+\d{1,2}"; string patMn =@"min\s+=\s+\d{1,2}"; string patSc =@"sec\s+=\s+\d{1,2}"; Regex regDt =new Regex(patDt); Regex regHr =new Regex(patHr); Regex regMn =new Regex(patMn); Regex regSc =new Regex(patSc); res = DateTime.Parse(regDt.Match(html).Value); int hr = GetInt(regHr.Match(html).Value, false); int mn = GetInt(regMn.Match(html).Value, false); int sc = GetInt(regSc.Match(html).Value, false); res = res.AddHours(hr).AddMinutes(mn).AddSeconds(sc); } catch { } return res; } ///<summary> /// 从指定的字符串中获取整数 ///</summary> ///<param name="origin">原始的字符串</param> ///<param name="fullMatch">是否完全匹配,若为false,则返回字符串中的第一个整数数字</param> ///<returns>整数数字</returns> privatestaticint GetInt(string origin, bool fullMatch) { if (string.IsNullOrEmpty(origin)) { return0; } origin = origin.Trim(); if (!fullMatch) { string pat =@"-?\d+"; Regex reg =new Regex(pat); origin = reg.Match(origin.Trim()).Value; } int res =0; int.TryParse(origin, out res); return res; } #endregion
///<summary> /// 获取标准北京时间1 ///</summary> ///<returns></returns> publicstatic DateTime GetStandardTime() { //<?xml version="1.0" encoding="GB2312" ?> //- <ntsc> //- <time> // <year>2011</year> // <month>7</month> // <day>10</day> // <Weekday /> // <hour>19</hour> // <minite>45</minite> // <second>37</second> // <Millisecond /> // </time> // </ntsc> DateTime dt; WebRequest wrt =null; WebResponse wrp =null; try { wrt = WebRequest.Create("http://www.time.ac.cn/timeflash.asp?user=flash"); wrt.Credentials = CredentialCache.DefaultCredentials; wrp = wrt.GetResponse(); StreamReader sr =new StreamReader(wrp.GetResponseStream(), Encoding.UTF8); string html = sr.ReadToEnd(); sr.Close(); wrp.Close(); int yearIndex = html.IndexOf("<year>") +6; int monthIndex = html.IndexOf("<month>") +7; int dayIndex = html.IndexOf("<day>") +5; int hourIndex = html.IndexOf("<hour>") +6; int miniteIndex = html.IndexOf("<minite>") +8; int secondIndex = html.IndexOf("<second>") +8; string year = html.Substring(yearIndex, html.IndexOf("</year>") - yearIndex); string month = html.Substring(monthIndex, html.IndexOf("</month>") - monthIndex); ; string day = html.Substring(dayIndex, html.IndexOf("</day>") - dayIndex); string hour = html.Substring(hourIndex, html.IndexOf("</hour>") - hourIndex); string minite = html.Substring(miniteIndex, html.IndexOf("</minite>") - miniteIndex); string second = html.Substring(secondIndex, html.IndexOf("</second>") - secondIndex); dt = DateTime.Parse(year +"-"+ month +"-"+ day +""+ hour +":"+ minite +":"+ second); } catch (WebException) { return DateTime.Parse("2011-1-1"); } catch (Exception) { return DateTime.Parse("2011-1-1"); } finally { if (wrp !=null) wrp.Close(); if (wrt !=null) wrt.Abort(); } return dt; } ///<summary> /// 获取标准北京时间2 ///</summary> ///<returns></returns> publicstatic DateTime GetBeijingTime() { //t0 = new Date().getTime(); //nyear = 2011; //nmonth = 7; //nday = 5; //nwday = 2; //nhrs = 17; //nmin = 12; //nsec = 12; DateTime dt; WebRequest wrt =null; WebResponse wrp =null; try { wrt = WebRequest.Create("http://www.beijing-time.org/time.asp"); wrp = wrt.GetResponse(); string html =string.Empty; using (Stream stream = wrp.GetResponseStream()) { using (StreamReader sr =new StreamReader(stream, Encoding.UTF8)) { html = sr.ReadToEnd(); } } string[] tempArray = html.Split(';'); for (int i =0; i < tempArray.Length; i++) { tempArray[i] = tempArray[i].Replace("\r\n", ""); } string year = tempArray[1].Substring(tempArray[1].IndexOf("nyear=") +6); string month = tempArray[2].Substring(tempArray[2].IndexOf("nmonth=") +7); string day = tempArray[3].Substring(tempArray[3].IndexOf("nday=") +5); string hour = tempArray[5].Substring(tempArray[5].IndexOf("nhrs=") +5); string minite = tempArray[6].Substring(tempArray[6].IndexOf("nmin=") +5); string second = tempArray[7].Substring(tempArray[7].IndexOf("nsec=") +5); dt = DateTime.Parse(year +"-"+ month +"-"+ day +""+ hour +":"+ minite +":"+ second); } catch (WebException) { return DateTime.Parse("2011-1-1"); } catch (Exception) { return DateTime.Parse("2011-1-1"); } finally { if (wrp !=null) wrp.Close(); if (wrt !=null) wrt.Abort(); } return dt; }
按 Ctrl+C 复制代码
按 Ctrl+C 复制代码
调用示例:
DateTime dt = Common.GetBeijingTime();// Common.GetStandardTime(); if (dt.ToString() =="2011-1-1 0:00:00") { MessageBox.Show("网络异常,不能启动本程序!"); Application.Exit(); return; }
相关文章推荐
- iOS 网络编程 ASI 发送请求数据
- iOS网络编程 AFNconnection GET和POST请求
- 聊聊HTTPS与Android安全
- 设置CentOS开机连接网络 Centos 开机启动网卡的设置方法
- 查看网络图片
- 实例-访问网络图片
- tomcat设置https请求步骤(单向验证)
- HTTP请求:GET与POST方法的区别
- android-async-http AsyncHttpClient介绍
- android获取网络图片简单实现
- HTTP_X_FORWARDED_FOR 和 REMOTE_ADDR的使用 php
- 查看网络图片
- Exploring the Network
- HTTP/1.1 500 Server Error
- 用Wireshark从Http数据包中得到用户的登录信息
- TCP/IP协议栈的基本工作原理
- C++ 网络编程
- android查看网络图片
- Android 从网络中获取图片
- 6月第3周网络安全报告:境内感染网络病毒主机55.4万