c#时钟使用自定义时间

本文关键字:自定义 时间 时钟 | 更新日期: 2023-09-27 18:09:25

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

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

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

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

    }

我想让它完全按照我给出的时间作为系统时钟来实现。提前感谢您的帮助-

c#时钟使用自定义时间

我强烈避免重复添加特定数量的时间-计时器不会完全按时触发,所以您最终会因此而漂移。

相反,记住系统时钟之间的差异,并在需要时添加差异:

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,这取决于您是否希望自定义时钟在时区偏移量改变时改变值。我们不知道你真正想要实现的是什么,所以很难确定。