使用自定义时间的C#时钟

时间:2014-06-20 05:59:34

标签: c# datetime timer

嗨,我正在实施简单的时钟。

我的要求是我希望我的时钟按照我设置的时间执行,而不是系统时间。

我已经实现了使用计时器,但它没有同步。

    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");


    }

我希望它能够像我给出的时间一样完全用作系统时钟。感谢您的帮助 -

1 个答案:

答案 0 :(得分:2)

我会强烈避免重复添加一段特定的时间 - 计时器不准时准确地 ,所以你最终会因此而漂移。

相反,请记住系统时钟之间的差异,并随时添加差异:

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,具体取决于您是否希望自定义时钟在时区偏移更改时更改值。我们不知道你真正想要实现的目标,这使得很难确定这一点。