为什么 SetSystemTime() 在下午表现不同?

腹肌

我编写了以下类来更改系统日期时间,但我不明白为什么它在一天中的不同时间运行不同:

  • 早晨:传递到的确切时间SetTime()被设置为系统时间。
  • 下午:传递给SetTime()+1Hr的时间被设置为系统时间,额外的一小时从哪里来?

.

public class SystemDateTimeController
{        

[DllImport("kernel32.dll", EntryPoint = "SetSystemTime", SetLastError = true)]
private extern static bool Win32SetSystemTime(ref SYSTEMTIME sysTime);       


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

    public static void SetTime(DateTime NewDateTime)
    {
        try
        {
            SYSTEMTIME systime = new SYSTEMTIME();

            systime.wMilliseconds = (ushort)NewDateTime.Millisecond;
            systime.wSecond = (ushort)NewDateTime.Second;
            systime.wMinute = (ushort)NewDateTime.Minute;
            systime.wHour = (ushort)NewDateTime.Hour;

            systime.wDayOfWeek = (ushort)NewDateTime.DayOfWeek;

            systime.wDay = (ushort)NewDateTime.Day;
            systime.wMonth = (ushort)NewDateTime.Month;
            systime.wYear = (ushort)NewDateTime.Year;

            Win32SetSystemTime(ref systime);
        }
        catch (Exception e)
        {
            Log("Failed to set system date time to: " + NewDateTime.ToString() + ". Exception: " + e.ToString());
        }

    }

}

我知道传递给SetTime()和测试目的的确切时间,并消除与源有关的任何可能性,我什至传递了一个硬编码字符串:Convert.ToDateTime("07/06/2018 13:00:00");

用户6921302

SetSystemTime 需要 UTC。OP 正在当地时间提供它,这就是问题所在(感谢@IInspectable

为了您的目的,最好使用SetLocalTime,它始终使用您的本地时区。

问候

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么梳子在循环内表现不同?

为什么我的 DateTime 对象表现不同?

为什么补码通过printf表现不同?

为什么char *和int *表现不同

为什么“名称”的属性表现不同?

为什么 split() 和 StringTokenizer() 表现不同

为什么排序在 Chrome 中表现不同?

为什么Java Swing在不同的系统上表现不同?

为什么线程在不同的运行方法主体中表现不同?

为什么TreeSet的add方法在不同的JRE中表现不同?

为什么此代码在不同的值下表现不同

为什么Split在不同的String上表现不同?

为什么@ComponentScan 对于不同的配置文件表现不同?

为什么 printf 在从 Makefile 调用时表现不同?

为什么numba和numpy在就地操作上表现不同?

为什么.loc根据打印或分配的值而表现不同?

为什么通用元素在定义为Double时表现不同?

为什么sys.excepthook在包装时表现不同?

为什么sed在shell脚本中表现不同?

为什么Java参数在Windows和Linux中表现不同?

逐行读取时,为什么$ {fh}与$ fh表现不同?

为什么strptime在Rails的测试环境中表现不同?

为什么单个元素哈希表在Powershell中表现不同?

为什么循环在一次迭代中表现不同?

为什么QWidget在继承时会表现出不同的行为

为什么这种排序方法对某些输入有不同的表现?

为什么替换功能在模块或脚本中表现不同?

为什么两个代码表现不同?

为什么`==`在zsh和bash中的[[...]`内部表现不同?