当我们从他人的服务器上获取数据的时候,因为客户端和服务器时间不同步的原因导致获取数据失败。有时候需要同步时间服务器, 当怎么同步时间服务器都没用的时候,我们可以适当的更改本地系统时间。
在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