我正在尝试将函数设置为在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);
}
答案 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);
}