方法
#region 更改系统时间
// 针对于旧Windows系统,如Windows XP,win2003,win2008
[DllImport("Kernel32.dll")]
public static extern bool SetSystemTime(ref SystemTime sysTime);
[DllImport("Kernel32.dll")]
public static extern void GetSystemTime(ref SystemTime sysTime);
[DllImport("Kernel32.dll")]
public static extern bool SetLocalTime(ref SystemTime sysTime);
[DllImport("Kernel32.dll")]
public static extern void GetLocalTime(ref SystemTime sysTime);
[StructLayout(LayoutKind.Sequential)]
public struct SystemTime
{
[MarshalAs(UnmanagedType.U2)]
internal ushort year; // 年
[MarshalAs(UnmanagedType.U2)]
internal ushort month; // 月
[MarshalAs(UnmanagedType.U2)]
internal ushort dayOfWeek; // 星期
[MarshalAs(UnmanagedType.U2)]
internal ushort day; // 日
[MarshalAs(UnmanagedType.U2)]
internal ushort hour; // 时
[MarshalAs(UnmanagedType.U2)]
internal ushort minute; // 分
[MarshalAs(UnmanagedType.U2)]
internal ushort second; // 秒
[MarshalAs(UnmanagedType.U2)]
internal ushort milliseconds; // 毫秒
}
///
public static void setSystemDate(DateTime currentTime)
{
SystemTime sysTime = new SystemTime();
sysTime.year = Convert.ToUInt16(currentTime.Year);
sysTime.month = Convert.ToUInt16(currentTime.Month);
sysTime.day = Convert.ToUInt16(currentTime.Day);
sysTime.dayOfWeek = Convert.ToUInt16(currentTime.DayOfWeek);
sysTime.minute = Convert.ToUInt16(currentTime.Minute);
sysTime.second = Convert.ToUInt16(currentTime.Second);
sysTime.milliseconds = Convert.ToUInt16(currentTime.Millisecond);
//SetSystemTime()默认设置的为UTC时间,设定时比北京时间多了8个小时。
//int nBeijingHour = currentTime.Hour - 8
int nBeijingHour = currentTime.Hour;
if (nBeijingHour < 0)
{
nBeijingHour = 24;
sysTime.day = Convert.ToUInt16(currentTime.Day - 1);
sysTime.dayOfWeek = Convert.ToUInt16(currentTime.DayOfWeek - 1);
}
else
{
sysTime.day = Convert.ToUInt16(currentTime.Day);
sysTime.dayOfWeek = Convert.ToUInt16(currentTime.DayOfWeek);
}
sysTime.hour = Convert.ToUInt16(nBeijingHour);
//设置系统时间
//SetSystemTime(ref sysTime);
SetLocalTime(ref sysTime);
}
#endregion
调用方法
private void Main_Load(object sender, EventArgs e)
{
try
{
DynWebService BHWS = new DynWebService();
DateTime currentTime = BHWS.GetDate(MyHelper.strVerify);
setSystemDate(currentTime);
}
catch (Exception ex)
{
MessageBox.Show("设置系统时间失败!");
}
}