使用c#将时间转换为定时器间隔

本文关键字:定时器 转换 时间 使用 | 更新日期: 2023-09-27 18:18:26

我正在比较计时和基于分配间隔的计时器。

我有两个日期时间,

例如

Datetime dt1 = 04:00:00;
Datetime dt2 = 15:20:28;
Datetime dt3 = 24:00:00;

现在,我想将interval设置为在04:00:00调用定时器。想想,现在,时间是15:20:28,所以要在04:00:00调用定时器,我需要做一些操作。

那么,我应该怎么做才能在04:00:00调用Timer ??简而言之,我想检查时间,如果不是04:00 AM,那么设置适当的间隔,在04:00 AM调用定时器。

并将时间转换为定时器间隔??

使用c#将时间转换为定时器间隔

不能调用Timer。定时器唤醒时,它的间隔结束。您可以做的是计算从现在到4AM的TimeSpan,并将Timer interval设置为此值。或者更有效的架构方法,是将计时器间隔设置为每n秒,并在计时器唤醒时检查它是否为4。

下面是第一个选项的示例代码:
TimeSpan ts = new TimeSpan(new DateTime(2013,06,15,04,00,00).Ticks- DateTime.Now.Ticks);
        long ticks = ts.Ticks;
        long divide=    (long)Math.Pow(10, 7);
        long span = ticks / divide;
        timer.Interval = (int)span*1000;
        timer.Tick += timer_Tick;
        timer.Start();
var dt = ... // next 4:00 AM from now
var timer = new Timer(callback, null, dt - DateTime.Now, TimeSpan.FromHours(24));

查看是否适合您