C#同步网络时间的方法实例详解
2015-05-04 10:24
721 查看
本文实例讲述了C#同步网络时间的方法。分享给大家供大家参考。具体分析如下:
客户的机器的系统时间经常出错,导致给他们做的软件无法正常使用,所以后来就加了一个同步网络时间的小功能。实现起来很简单,但是却很使用。
这个小功能就是先获取网络时间,然后将系统的时间修改成从网络获得的时间。下面是具体的实现:
获取网络时间:
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对象,然后传给设置系统时间的方法,修改系统时间。
同步系统时间:
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; } }
两个方法分别写在了两个类里面,只需要在客户端实例化两个对象,然后依次调用其方法即可,简单实用。
希望本文所述对大家的C#程序设计有所帮助。
您可能感兴趣的文章:
相关文章推荐
- C#实现从网络同步标准北京时间的方法
- C#设置系统时间的方法实例详解
- C#动态创建button按钮的方法实例详解
- C# 实现网络时间同步功能
- C#限速下载网络文件的方法实例
- C#同步网络时间和本地时间
- 解决C# WINFORM程序只允许运行一个实例的几种方法详解
- Java线程同步、同步方法实例详解
- android-获取网络时间、获取特定时区时间、时间同步的方法
- iOS中设置网络超时时间+模拟的方法详解
- 实例详解C#实现http不同方法的请求
- 解决C#程序只允许运行一个实例的几种方法详解
- C#测量程序运行时间及cpu使用时间实例方法
- C#中动态显示当前系统时间的实例方法
- C#同步和异步调用方法实例
- 如何获取C#中方法的执行时间以及其代码注入详解
- C# 实现多线程的同步方法详解
- .Net Remoting 事件回调 Client 函数方法完整实例: C# 实现控制台网络聊天室 (Console Remoting ChatRoom)
- 修改服务器时间方法详解--时间同步应用
- C# 实现多线程的同步方法详解