C#修改系统时间

本文介绍了一种通过WinAPI的SetLocalTime函数来修改Windows系统时间的方法。具体实现了从DateTime对象转换为SYSTEMTIME结构体,并调用Win32API进行时间设定。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

利用WINAPIpublic static extern bool SetLocalTime( ref SYSTEMTIME Time)实现
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 wMilliseconds;
 
///从System.DateTime转换。
    public void FromDateTime(DateTime time)
    {
       wYear = (ushort)time.Year;
       wMonth = (ushort)time.Month;
       wDayOfWeek = (ushort)time.DayOfWeek;
       wDay = (ushort)time.Day;
       wHour = (ushort)time.Hour;
       wMinute = (ushort)time.Minute;
       wSecond = (ushort)time.Second;
       wMilliseconds = (ushort)time.Millisecond;
    }
 
    ///转换为System.DateTime类型。  
    public DateTime ToDateTime()
    {
       return new DateTime(wYear, wMonth, wDay, wHour, wMinute, wSecond, wMilliseconds);
    }
    ///<summary>
    ///静态方法。转换为System.DateTime类型。
    ///</summary>
    ///<param name="time">SYSTEMTIME类型的时间。</param>
    ///<returns></returns>
    public static DateTime ToDateTime(SYSTEMTIME time)
    {
 return time.ToDateTime();
    }
}
 
public class Win32API
{
    [DllImport("Kernel32.dll")]
    public static extern bool SetLocalTime( ref SYSTEMTIME Time );
    [DllImport("Kernel32.dll")]
    public static extern void GetLocalTime(ref SYSTEMTIME Time);
}
 
          public void setTime()//一般
       {
           /*获得彩屏时间*/
           ReceiveCanDataFromJK(0x50);//获得目录
 
          
           int hour= CanData50[0,0,4]&0x1f;
           int minute=CanData50[0,0,5]&0x3f;
           int second= CanData50[0,0,6]&0x3f;
           int minisecond= (CanData50[0,0,7]&0x7f)*10; //CanData50[0,0,7]百分秒
 
           DateTime t = DateTime.Now; //获取当前时间
           t=t.AddHours(hour-t.Hour);
           t=t.AddMinutes(minute-t.Minute);
           t=t.AddSeconds(second-t.Second);
           t=t.AddMilliseconds(minisecond-t.Millisecond);
           //转换System.DateTime到SYSTEMTIME
           SYSTEMTIME st = new SYSTEMTIME();
           st.FromDateTime(t);
           //调用Win32 API设置系统时间
           Win32API.SetLocalTime(ref st);
       }
      
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值