将系统日期时间重置为当前日期时间

问题描述 投票:0回答:1

我根据Stackoverflow帖子“以编程方式更改系统日期”实现了在单元测试中更改系统日期时间的代码。如何将系统日期时间重设为当前日期时间?

public struct SYSTEMTIME
{
    public short wYear;
    public short wMonth;
    public short wDayOfWeek;
    public short wDay;
    public short wHour;
    public short wMinute;
    public short wSecond;
    public short wMilliseconds;
}

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

SYSTEMTIME st = new SYSTEMTIME();
st.wYear = 2003; // must be short
st.wMonth = 5;
st.wDay = 22;
st.wHour = 0;
st.wMinute = 0;
st.wSecond = 0;

SetSystemTime(ref st); // invoke this method.
datetime reset
1个回答
0
投票

如果PC联机,则正确的方法是转到query the current DateTime from timeserver。错误和容易出错的方法是在设置自定义DateTime之前,立即在系统时钟和自定义DateTime之间存储TimeSpan difference,然后在以后使用该TimeSpan来获取近似的实际DateTime进行重置。这是错误的方法,因为从计算值引入的延迟会减慢您的时钟速度(如果无法察觉的话),并且容易出错,因为如果您的应用程序或其他应用程序更改了两者之间的系统时钟,则会得到更加不准确的结果。

© www.soinside.com 2019 - 2024. All rights reserved.