如何知道当前时间是否介于两个时间段之间?

时间:2016-06-20 15:23:44

标签: c# asp.net-mvc timespan

我有两次这样的时间跨度:

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

这并不涵盖所有场景,因为我需要它在开始时间到结束时间到最后一秒之间,但我不知道如何做到这一点。

1 个答案:

答案 0 :(得分:13)

你可以使用:

if (startTime < now && now < endTime)

请注意:

  • 这不会检查日期;看起来不像这是一个问题
  • 根据您这样做的原因,您可能需要考虑诸如“10 pm-2am”之间的时间间隔,此时您实际上想要颠倒逻辑
  • 在大多数情况下,值得制定下限包含和上限独占,例如。

    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;
}