当前位置:编程学习 > C#/ASP.NET >>

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;  
补充:软件开发 , C# ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,