C# 如何知道当前时间是否在两个时间间隔之间?
我有两个这样的时间跨度:C# 如何知道当前时间是否在两个时间间隔之间?,c#,asp.net-mvc,timespan,C#,Asp.net Mvc,Timespan,我有两个这样的时间跨度: TimeSpan Starttime : 16:37:00 TimeSpan EndTime: 17:37:00 当前时间: DateTime currentDate = DateTime.Now; TimeSpan now = currentDate.TimeOfDay; 问题: 我不知道如何知道当前时间是否在starttime和endtime之间。我只想在这两个时间段之间发送mesages 我该怎么做 我的尝试: if(startTime.Hours <
TimeSpan Starttime : 16:37:00
TimeSpan EndTime: 17:37:00
当前时间:
DateTime currentDate = DateTime.Now;
TimeSpan now = currentDate.TimeOfDay;
问题:
我不知道如何知道当前时间是否在starttime和endtime之间。我只想在这两个时间段之间发送mesages
我该怎么做
我的尝试:
if(startTime.Hours < now.Hours && endTime.Hours > now.Hours)
// do stuff
if(startTime.Hoursnow.Hours)
//做事
这并不能涵盖所有场景,因为我需要它精确地介于开始时间和结束时间之间,直到最后一秒,但我不知道如何做到这一点。您可以使用:
if (startTime < now && now < endTime)
if(开始时间
请注意:
- 这不检查日期;看起来这不是个问题 根据您为什么这样做,您可能需要考虑诸如“10PM-2AM”这样的间隔,此时您要有效地反转逻辑。
- 在大多数情况下,让下界包含和上界独占是值得的
if (startTime <= now && now < endTime)
<代码> >(开始时我把它复杂化了)。谢谢你的快速回答!我可以问一个问题:“根据你为什么这样做,你可能想考虑诸如“10PM-2AM”这样的间隔,在这个点上,你实际上想扭转逻辑。”为什么这里需要颠倒逻辑?starttime会比现在大,if括号内的代码不会执行“This not check the date”。你是什么意思?我的理解是DateTime comparators只是做了一个刻度比较。之前的日期在任何给定的时间都应该有较低的刻度值。@itsme86:关键是我们要去掉日期-这只是处理一天中的时间值。在许多情况下,检查间隔也会关心日期,但我是assuming这超出了这个特定问题的范围。@Ra3IDeN我认为您必须添加一个额外的修饰符,如bool nighlight=false;//默认值
,然后您的if语句将是
if((startTime@Ra3IDeN您可以通过编程设置
,或者在我之前的评论中给出的if语句中用nighlight=startTime>endTime
替换变量,从而完全消除变量。我经常被startTime>endTime
和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; }