當我們從他人的服務器上獲取數據的時候,因為客戶端和服務器時間不同步的原因導致獲取數據失敗。有時候需要同步時間服務器, 當怎么同步時間服務器都沒用的時候,我們可以適當的更改本地系統時間。
在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