我有两次这样的时间跨度:
TimeSpan Starttime : 16:37:00
TimeSpan EndTime: 17:37:00
当前时间:
DateTime currentDate = DateTime.Now;
TimeSpan now = currentDate.TimeOfDay;
问题:
我无法弄清楚如何知道当前时间是否在开始时间和结束时间之间。我想只在这两个时间盘之间发送消息。
我该怎么做?
我的尝试:
if(startTime.Hours < now.Hours && endTime.Hours > now.Hours)
// do stuff
这并不涵盖所有场景,因为我需要它在开始时间到结束时间到最后一秒之间,但我不知道如何做到这一点。
答案 0 :(得分:13)
你可以使用:
if (startTime < now && now < endTime)
请注意:
在大多数情况下,值得制定下限包含和上限独占,例如。
if (startTime <= now && now < endTime)
这很有用,因为那时你可以有几个间隔,其中一个间隔的结束是下一个间隔的开始,而任何一个时间恰好是一个间隔。
要处理“10 pm-2am”示例,您需要的内容如下:
if (interval.StartTime < interval.EndTime)
{
// Normal case, e.g. 8am-2pm
return interval.StartTime <= candidateTime && candidateTime < interval.EndTime;
}
else
{
// Reverse case, e.g. 10pm-2am
return interval.StartTime <= candidateTime || candidateTime < interval.EndTime;
}