使用C#改变windows系统本地时间

当我们从他人的服务器上获取数据的时候,因为客户端和服务器时间不同步的原因导致获取数据失败。有时候需要同步时间服务器, 当怎么同步时间服务器都没用的时候,我们可以适当的更改本地系统时间。
在windows更改本地时间的通常做法是时:
1,首先定义一个结构体
 1 [StructLayout(LayoutKind.Sequential)]         
 2         public struct SYSTEMTIME
 3     {    
 4         public short wYear;    
 5         public short wMonth;    
 6         public short wDayOfWeek;    
 7         public short wDay;    
 8         public short wHour;    
 9         public short wMinute;    
10         public short wSecond;    
11         public short wMilliseconds;
12     }

2,添加外部引用的方法,使用的是windows系统的库kernel32.dll:

[DllImport("kernel32.dll", SetLastError = true)]public static extern bool SetSystemTime(ref SYSTEMTIME st);

3, 在实例中,填充SYSTEMTIME这个结构, 然后就可以调用这个函数:

public static bool SetLocalTimeByStr(string timestr)       
{          
     bool flag = false;           
    SystemTime sysTime = new SystemTime();           
    DateTime dt = Convert.ToDateTime(timestr);           
    sysTime.wYear = Convert.ToUInt16(dt.Year);    //must be short           
    sysTime.wMonth = Convert.ToUInt16(dt.Month);           
    sysTime.wDay = Convert.ToUInt16(dt.Day);           
    sysTime.wHour = Convert.ToUInt16(dt.Hour);           
    sysTime.wMinute = Convert.ToUInt16(dt.Minute);           
    sysTime.wSecond = Convert.ToUInt16(dt.Second);          
    try
    {
     flag = SetSystemDateTime.SetLocalTime(ref sysTime);
    }
    catch
    {
        return false;
    }           
    return flag;       
}

   4,例如将本地时间减慢30秒的话,可以这样做:   

string changeTime = DateTime.Now.AddSeconds(-30).ToString();
    SetLocalTimeByStr(changeTime);

转载:

https://blog.csdn.net/mucangmang/article/details/79660920

原文地址:https://www.cnblogs.com/sunice/p/14081599.html