设置闹钟有比这更好的方法吗?

时间:2012-05-05 18:26:13

标签: c# .net

我正在尝试将函数设置为在c#中的一天中的特定时间运行。 这段代码似乎有效,但我对此并不那么自信。有没有更好的方法呢?

这是我的代码

String thetimeis = DateTime.Now.ToString("HH:mm:ss");
DateTime alarmtimeStart = Convert.ToDateTime("12:00:00");
DateTime alarmtimeStop = Convert.ToDateTime("12:02:00");

if (Convert.ToDateTime(thetimeis) > alarmtimeStart && Convert.ToDateTime(thetimeis) < alarmtimeStop)
{
  MessageBox.Show(thetimeis);
}

4 个答案:

答案 0 :(得分:4)

如果您正在寻找更安全的工作日程安排解决方案,我建议您使用Quartz。对于琐碎的工作,它可能有点过分,但我发现它比使用我自己的解决方案更容易使用和更容易。

答案 1 :(得分:2)

是的,有更好的方法 - 只需单独比较小时,分钟和秒。

DateTime now = DateTime.Now;
DateTime alarmtimeStart = Convert.ToDateTime("12:00:00");
DateTime alarmtimeStop = Convert.ToDateTime("12:02:00");

if (now.Hour >= alarmtimeStart.Hour && now.Minute >= alarmtimeStart.Minute && now.Second >= alarmtimeStart.Second && now.Hour <= alarmtimeStop.Hour && now.Minute <= alarmtimeStop.Minute && now.Second <= alarmtimeStop.Second)
{
    MessageBox.Show(thetimeis);
}

答案 2 :(得分:2)

你不能直接比较日期的TimeOfDay属性吗?

修改

TimeSpan thetimeis = DateTime.Now.TimeOfDay;
TimeSpan alarmtimeStart = new TimeSpan(12, 0, 0);
TimeSpan alarmtimeStop = new TimeSpan(12, 2, 0);

if (thetimeis >= alarmtimeStart && thetimeis < alarmtimeStop)
{
   MessageBox.Show(thetimeis);
}

答案 3 :(得分:1)

我有点困惑为什么你需要这么多的转换,以下是不是更好?

if (DateTime.Now > alarmtimeStart && DateTime.Now < alarmtimeStop) 
{ 
  MessageBox.Show(thetimeis); 
}