使用C#将时间转换为Timer Interval

时间:2013-06-15 10:12:31

标签: c# web-applications timer

我正在比较时间并根据为计时器分配间隔。

我有2个日期时间,

对于即便。

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

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

那么,我应该怎么做才能在04:00:00拨打Timer ??? 简而言之,我想查看时间,如果不是04:00 AM,那么设置适当的时间间隔在凌晨04:00呼叫计时器。

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

2 个答案:

答案 0 :(得分:0)

你不能叫Timer。定时器在间隔结束时唤醒。 您可以做的是从现在到4 AM计算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();

答案 1 :(得分:0)

var dt = ... // next 4:00 AM from now
var timer = new Timer(callback, null, dt - DateTime.Now, TimeSpan.FromHours(24));

检查这是否适合您