C# 尝试在夏时制结束前以编程方式设置电脑时钟
复制: 1) 将Microsoft.VisualBasic程序集添加到项目引用中 2) 将PC时区更改为:(GMT+10:00)堪培拉、墨尔本、悉尼。确保电脑设置为自动调整夏令时时钟。(对于该时区,夏令时在2010年4月4日凌晨3点结束。) 3) 添加以下代码: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
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
,如下示例所示:
不确定这是否解决了你的问题,但也许值得一试