使用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

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM