日本好好热aⅴ|国产99视频精品免费观看|日本成人aV在线|久热香蕉国产在线

  • <cite id="ikgdy"><table id="ikgdy"></table></cite>
    1. 西西軟件園多重安全檢測(cè)下載網(wǎng)站、值得信賴的軟件下載站!
      軟件
      軟件
      文章
      搜索

      首頁編程開發(fā)C#.NET → 與網(wǎng)絡(luò)時(shí)間同步的時(shí)間處理函數(shù)代碼

      與網(wǎng)絡(luò)時(shí)間同步的時(shí)間處理函數(shù)代碼

      相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來源:本站整理時(shí)間:2010/9/30 14:31:22字體大小:A-A+

      作者:佚名點(diǎn)擊:603次評(píng)論:0次標(biāo)簽: 時(shí)間同步

      • 類型:系統(tǒng)其它大。720KB語言:中文 評(píng)分:10.0
      • 標(biāo)簽:
      立即下載
      時(shí)間準(zhǔn)確的重要性不言而喻,有時(shí)候我們對(duì)時(shí)間的要求非常嚴(yán)格,有時(shí)候也要求不允許用戶調(diào)整系統(tǒng)時(shí)間,有時(shí)候。。。等等情況下,我們都需要時(shí)間的同步,雖然Windows也有DOS命令來保持和時(shí)鐘服務(wù)進(jìn)行同步,但本文另辟途徑,介紹另一種獲取標(biāo)準(zhǔn)時(shí)間并同步時(shí)間的操作。

      首先,我們來看看一個(gè)網(wǎng)站:國家授時(shí)中心(http://www.time.ac.cn/stime.asp),這個(gè)是應(yīng)該是時(shí)間的權(quán)威機(jī)構(gòu),里面有各國各地的時(shí)間,我們可以通過同步該時(shí)間來實(shí)現(xiàn)系統(tǒng)時(shí)間的更新。首先分兩步,一步是獲取“國家授時(shí)中心”的時(shí)間,一步是更新系統(tǒng)時(shí)間。下面的代碼就是做這些工作。

      #region 獲取網(wǎng)絡(luò)時(shí)間
      /// <summary>
      /// 獲取中國國家授時(shí)中心網(wǎng)絡(luò)服務(wù)器時(shí)間發(fā)布的當(dāng)前時(shí)間
      /// </summary>
      /// <returns></returns>
      public static 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>
      /// 從指定的字符串中獲取整數(shù)
      /// </summary>
      /// <param name="origin">原始的字符串</param>
      /// <param name="fullMatch">是否完全匹配,若為false,則返回字符串中的第一個(gè)整數(shù)數(shù)字</param>
      /// <returns>整數(shù)數(shù)字</returns>
      private static int GetInt(string origin, bool fullMatch)
      {
      if (string.IsNullOrEmpty(origin))
      {
      return 0;
      }
      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


      #region P/Invoke 設(shè)置本地時(shí)間

      [DllImport("kernel32.dll")]
      private static extern bool SetLocalTime(ref SYSTEMTIME time);

      [StructLayout(LayoutKind.Sequential)]
      private struct SYSTEMTIME
      {
      public short year;
      public short month;
      public short dayOfWeek;
      public short day;
      public short hour;
      public short minute;
      public short second;
      public short milliseconds;
      }

      /// <summary>
      /// 設(shè)置本地計(jì)算機(jī)時(shí)間
      /// </summary>
      /// <param name="dt">DateTime對(duì)象</param>
      public static void SetLocalTime(DateTime dt)
      {
      SYSTEMTIME st;

      st.year = (short)dt.Year;
      st.month = (short)dt.Month;
      st.dayOfWeek = (short)dt.DayOfWeek;
      st.day = (short)dt.Day;
      st.hour = (short)dt.Hour;
      st.minute = (short)dt.Minute;
      st.second = (short)dt.Second;
      st.milliseconds = (short)dt.Millisecond;

      SetLocalTime(ref st);
      }

      #endregion


      兩步操作就可以搞定時(shí)間的同步,測(cè)試效果還是不錯(cuò),不過不建議頻繁進(jìn)行時(shí)間的同步處理,間隔一段時(shí)間檢查一次即可。

      如果你有更好的方法,希望大家交流提高。

        相關(guān)評(píng)論

        閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

        • 8 喜歡喜歡
        • 3 頂
        • 1 難過難過
        • 5 囧
        • 3 圍觀圍觀
        • 2 無聊無聊

        熱門評(píng)論

        最新評(píng)論

        發(fā)表評(píng)論 查看所有評(píng)論(0)

        昵稱:
        表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
        字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過審核才能顯示)