嗨,我正在实现这个简单的时钟。
我的要求是,我希望我的时钟按照我设定的时间执行,而不是系统时间。
我已经实现了使用计时器,但它不是同步的。
private void button1_Click(object sender, EventArgs e)
{
//dtvalue =
dtvalue = DateTime.Parse("11:33:05");
label1.Text = dtvalue.ToString("HH : mm : ss : fff");
timer1.Interval = 100;
timer1.Tick += new EventHandler(timer_Tick);
timer1.Start();
}
void timer_Tick(object sender, EventArgs e)
{
dtvalue = dtvalue.AddMilliseconds(100);
label1.Text = dtvalue.ToString("HH : mm : ss : fff");
}我希望它得到的实现与我给出的时间系统时钟完全一样。谢谢你提前帮忙-
发布于 2014-06-20 06:05:58
我强烈地避免重复添加特定数量的计时器--计时器不会准时启动,因此您将因此而导致漂移。
相反,请记住系统时钟之间的差异,并在需要时添加该差异:
TimeSpan difference = ...;
void timer_Tick(object sender, EventArgs e)
{
DateTime now = DateTime.Now; // Or UtcNow, see later
DateTime adjusted = now + difference;
label1.Text = adjusted.ToString("HH : mm : ss : fff");
label2.Text = now.ToString("HH : mm : ss : fff");
}您可能需要考虑使用DateTime.UtcNow而不是DateTime.Now,这取决于您是否希望您的自定义时钟在时区偏移时更改值。我们不知道你到底想达到什么目的,所以很难确定这一点。
https://stackoverflow.com/questions/24320828
复制相似问题