代码之家  ›  专栏  ›  技术社区  ›  Moe Sisko

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

  •  1
  • Moe Sisko  · 技术社区  · 15 年前

    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点。

    (或者有没有更可靠的方法从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);
        }
    

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

    1 回复  |  直到 15 年前
        1
  •  1
  •   Hans Olsson    15 年前

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

    http://www.pinvoke.net/default.aspx/kernel32.setsystemtime

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