Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 尝试在夏时制结束前以编程方式设置电脑时钟_C#_.net_C# 2.0 - Fatal编程技术网

C# 尝试在夏时制结束前以编程方式设置电脑时钟

C# 尝试在夏时制结束前以编程方式设置电脑时钟,c#,.net,c#-2.0,C#,.net,C# 2.0,复制: 1) 将Microsoft.VisualBasic程序集添加到项目引用中 2) 将PC时区更改为:(GMT+10:00)堪培拉、墨尔本、悉尼。确保电脑设置为自动调整夏令时时钟。(对于该时区,夏令时在2010年4月4日凌晨3点结束。) 3) 添加以下代码: public void SetNewDateTime(DateTime dt) { Microsoft.VisualBasic.DateAndTime.Today = dt; // ignores tim

复制:

1) 将Microsoft.VisualBasic程序集添加到项目引用中

2) 将PC时区更改为:(GMT+10:00)堪培拉、墨尔本、悉尼。确保电脑设置为自动调整夏令时时钟。(对于该时区,夏令时在2010年4月4日凌晨3点结束。)

3) 添加以下代码:

    public void SetNewDateTime(DateTime dt)
    {
        Microsoft.VisualBasic.DateAndTime.Today = dt; // ignores time component
        Microsoft.VisualBasic.DateAndTime.TimeOfDay = dt;  // ignores date component
    }

    private void button1_Click(object sender, EventArgs e)
    {
        DateTime dt = new DateTime(2010, 4, 5, 5, 0, 0);  // XX
        SetNewDateTime(dt);  // XX

        System.Threading.Thread.Sleep(500);

        DateTime dt2 = new DateTime(2010, 4, 4, 1, 0, 0);
        SetNewDateTime(dt2);
    }
4) 单击按钮1时,PC时钟最终显示为凌晨2点,而预期为凌晨1点。 (如果删除标记为“XX”的代码,时钟有时会显示正确的1 am时间)

知道发生了什么吗? (或者有没有更可靠的方法从C#code设置PC时钟?)

蒂亚

编辑

为了响应David M,我尝试了一些修改过的代码:

    private void button1_Click(object sender, EventArgs e)
    {
        DateTime dt = new DateTime(2010, 4, 5, 5,0,0, DateTimeKind.Unspecified);
        SetNewDateTime(dt);

        System.Threading.Thread.Sleep(500);

        // type : 2010-04-04T01:00:00 into textBox1

        DateTime dt2 = System.Xml.XmlConvert.ToDateTime(textBox1.Text, System.Xml.XmlDateTimeSerializationMode.Unspecified);

        SetNewDateTime(dt2);
    }

这将从文本框中获取日期时间输入。结果是一样的。

我设置系统时间的方式一直是使用
SetSystemTime
,就像这里的示例:


不确定这是否解决了您的问题,但可能值得一试。

我设置系统时间的方式一直使用
SetSystemTime
,如下示例所示:

不确定这是否解决了你的问题,但也许值得一试