我想创建一个触发器。我给出两个输入。A)开始时间b)结束时间。
我想持续检查当前时间是否在开始时间和结束时间之间。并在0(不在范围内)和1(在范围内)之间切换全局变量的值。
但我需要每秒钟检查一次。
我现在正在做的事情是
while (true)
{
now_hrs = Convert.ToInt32(DateTime.Now.Hour);
now_min = Convert.ToInt32(DateTime.Now.Minute);
if (now_hrs >= start_hrs && now_hrs <= end_hrs)
{
if (now_hrs == start_hrs && now_min < start_min)
{
}
else if (now_hrs == end_hrs && now_min > end_min)
{
}
else
{
alert_trigger = 1;
}
}
}
但我什么也没得到,程序就挂了。
是否有其他方法可以检查当前时间是否在该范围内
或
在开始时间和结束时间之间将alert_trigger的值更改为1,否则为0。
发布于 2015-06-28 13:52:10
我假设start
和end
的类型是DateTime
while(true)
{
DateTime now = DateTime.Now;
alert_trigger = (now > start && now < end) ? 1 : 0;
}
干杯
发布于 2015-06-28 13:51:17
使用TimeSpan
而不是DateTime
:
var start = new TimeSpan(7, 0, 0); // your start time
var end = new TimeSpan(15, 0, 0); // your end time
while(true)
{
var now = DateTime.Now.TimeOfDay;
if (now <= end && now >= start)
{
alert_trigger = 1
}
}
此外,考虑另一种解决方案,但在while
循环中进行主动等待。也许订阅一个Timer
的Tick
-event。
发布于 2015-06-28 13:52:13
从DateTime.compare
使用
private void compareTime(DateTime start, DateTime end)
{
DateTime cur = DateTime.Now;
if(DateTime.compare(cur, start)>0 && DateTime.compare(cur, end)<0)
return 1;
else
return 0;
}
https://stackoverflow.com/questions/31096514
复制相似问题