以编程方式将系统时间设置为.NET中正确的服务器时间?

时间:2012-11-29 10:37:15

标签: c# .net unit-testing datetime testing

是否可以在.NET中将系统时间设置为正确的服务器时间?我有一个测试用例搞乱了系统时间,我想在测试用例的拆解中恢复它。 是否可以通过编程方式恢复正确的时间(例如从服务器)?

注意:我需要将其用于单元测试和验收测试。注入假时间不适用于后者。

2 个答案:

答案 0 :(得分:3)

这是设置时间(一旦你知道):

Change system date programmatically

如果您想从有效来源获取时间,可能本讨论中的答案可能对您有所帮助: How to Query an NTP Server using C#?

答案 1 :(得分:1)

 void setDate(string dateInYourSystemFormat)
    {
        var proc = new System.Diagnostics.ProcessStartInfo();
        proc.UseShellExecute = true;
        proc.WorkingDirectory = @"C:\Windows\System32";
        proc.CreateNoWindow = true;
        proc.FileName = @"C:\Windows\System32\cmd.exe";
        proc.Verb = "runas";
        proc.Arguments = "/C date " + dateInYourSystemFormat;
        try
        {
            System.Diagnostics.Process.Start(proc);
        }
        catch
        {
            MessageBox.Show("Error to change time of your system");
            Application.ExitThread();
        }
    }
void setTime(string timeInYourSystemFormat)
    {
        var proc = new System.Diagnostics.ProcessStartInfo();
        proc.UseShellExecute = true;
        proc.WorkingDirectory = @"C:\Windows\System32";
        proc.CreateNoWindow = true;
        proc.FileName = @"C:\Windows\System32\cmd.exe";
        proc.Verb = "runas";
        proc.Arguments = "/C time " + timeInYourSystemFormat;
        try
        {
            System.Diagnostics.Process.Start(proc);
        }
        catch
        {
            MessageBox.Show("Error to change time of your system");
            Application.ExitThread();
        }
    }