获取网络时间

 #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;
  }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值