using System.Drawing;
using System.ComponentModel;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential)]
public struct SystemTime
{
public ushort wYear;
public ushort wMonth;
public ushort wDayOfWeek;
public ushort wDay;
public ushort wHour;
public ushort wMinute;
public ushort wSecond;
public ushort wMiliseconds;
}
public class Win32
{
[DllImport("Kernel32.dll")]
public static extern bool SetSystemTime(ref SystemTime sysTime);
[DllImport("Kernel32.dll")]
public static extern void GetSystemTime(ref SystemTime sysTime);
}
#region 時間同步
/// <summary>
/// 設定與伺服器同步時間
/// </summary>
public void SynchronousTime()
{
try
{
#region 更改電腦時間
SystemTime sysTime = new SystemTime();
DateTime ServerTime = Convert.ToDateTime("2005-01-18");
sysTime.wYear = Convert.ToUInt16(ServerTime.Year);
sysTime.wMonth = Convert.ToUInt16(ServerTime.Month);
sysTime.wDay = Convert.ToUInt16(ServerTime.Day);
//處置北京時間
int nBeijingHour = ServerTime.Hour - 8;
if (nBeijingHour <= 0)
{
nBeijingHour += 24;
sysTime.wDay = Convert.ToUInt16(ServerTime.Day - 1);
sysTime.wDayOfWeek = Convert.ToUInt16(ServerTime.DayOfWeek - 1);
}
else
{
sysTime.wDay = Convert.ToUInt16(ServerTime.Day);
sysTime.wDayOfWeek = Convert.ToUInt16(ServerTime.DayOfWeek);
}
sysTime.wHour = Convert.ToUInt16(nBeijingHour);
sysTime.wMinute = Convert.ToUInt16(ServerTime.Minute);
sysTime.wSecond = Convert.ToUInt16(ServerTime.Second);
sysTime.wMiliseconds = Convert.ToUInt16(ServerTime.Millisecond);
Win32.SetSystemTime(ref sysTime);
#endregion
}
catch
{
//產生錯誤則不引發異常。
}
}
#endregion