C#修改本机系统时间(适用于win2003 win2008 windowXp 系统)

		 // 针对于旧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; // 毫秒
        }

        /// <summary>
        /// 设置系统时间
        /// </summary>
        private 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);
               
        }

	方法调用:
	 DateTime  currentTime= Convert.ToDateTime("2019-04-15 18:00:25");
	setSystemDate(currentTime);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值