程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#同步網絡時間

C#同步網絡時間

編輯:C#入門知識

客戶的機器的系統時間經常出錯,導致給他們做的軟件無法正常使用,所以後來就加了一個同步網絡時間的小功能。實現起來很簡單,但是卻很使用。   這個小功能就是先獲取網絡時間,然後將系統的時間修改成從網絡獲得的時間。下面是具體的實現:   獲取網絡時間:  [csharp]   using System;     using System.Collections.Generic;     using System.Linq;     using System.Text;     using System.IO;     using System.Net;     using System.Net.Sockets;     using System.Text.RegularExpressions;     using System.Runtime.InteropServices;   using System.Runtime;                    /// <summary>         /// 網絡時間         /// </summary>         public class NetTime       {                     /// <summary>             /// 獲取標准北京時間,讀取http://www.beijing-time.org/time.asp             /// </summary>             /// <returns>返回網絡時間</returns>             public DateTime GetBeijingTime()           {                           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].Split('=')[1];                   string month = tempArray[2].Split('=')[1];                   string day = tempArray[3].Split('=')[1];                   string hour = tempArray[5].Split('=')[1];                   string minite = tempArray[6].Split('=')[1];                   string second = tempArray[7].Split('=')[1];                      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;              }       }         獲取網絡時間,返回一個DateTime對象,然後傳給設置系統時間的方法,修改系統時間。 同步系統時間: [csharp]   using System;   using System.Collections.Generic;   using System.Linq;   using System.Text;   using System.IO;   using System.Net;   using System.Net.Sockets;   using System.Text.RegularExpressions;   using System.Runtime.InteropServices;   using System.Runtime;                 /// <summary>       /// 更新系統時間       /// </summary>       public class UpdateTime       {           //設置系統時間的API函數           [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>           /// 設置系統時間           /// </summary>           /// <param name="dt">需要設置的時間</param>           /// <returns>返回系統時間設置狀態,true為成功,false為失敗</returns>           public static bool SetDate(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;               bool rt = SetLocalTime(ref st);               return rt;           }       }     兩個方法分別寫在了兩個類裡面,只需要在客戶端實例化兩個對象,然後依次調用其方法即可,簡單實用。   PS:Win8修改系統時間需要管理員的權限,下篇博客介紹如何讓程序默認以管理員權限運行,敬請期待!    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved