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

C#使用自定义时间的时钟,c#,datetime,timer,C#,Datetime,Timer,嗨,我正在实现这个简单的时钟 我的要求是我希望我的时钟按照我设定的时间执行,而不是系统时间 我已经实现了使用定时器,但它是不同步的 private void button1_Click(object sender, EventArgs e) { //dtvalue = dtvalue = DateTime.Parse("11:33:05"); label1.Text = dtvalue.ToString("HH : mm :

嗨,我正在实现这个简单的时钟

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

我已经实现了使用定时器,但它是不同步的

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


    }

我希望它能像一个系统时钟一样,随着我给出的时间准确地运行。提前感谢您的帮助–

我强烈避免重复添加特定数量的时间-计时器不会准确地按时启动,因此您最终会因此而漂移

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

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 < /COD>而不是<代码> DATETIME.现在,这取决于您是否希望在时区偏移更改时自定义时钟改变值。我们不知道您真正想要实现的是什么,这使得很难确定这一点。

另外,由于我将间隔设置为100毫秒,所以功能无法正常工作。我希望它能够在给定的时间内准确地实现为系统时钟。提前谢谢你的帮助