如何知道当前时间是否在两个时间跨度之间?
How to know if current time is between two timespans?
我有两个这样的时间跨度:
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
这并没有涵盖所有情况,因为我需要它恰好在开始时间和结束时间之间到最后一秒,但我不知道该怎么做。
您可以只使用:
if (startTime < now && now < endTime)
注意:
- 这不检查日期;看起来这不是问题
- 根据您这样做的原因,您可能需要考虑时间间隔,例如“晚上 10 点到凌晨 2 点”,此时您实际上想要反转逻辑
在大多数情况下,下限包含和上限排除是值得的,例如
if (startTime <= now && now < endTime)
这很有用,因为您可以有多个间隔,其中一个间隔的结束是下一个间隔的开始,并且任何一次都恰好在一个间隔中。
要处理“晚上 10 点到凌晨 2 点”示例,您需要如下内容:
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;
}
我有两个这样的时间跨度:
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
这并没有涵盖所有情况,因为我需要它恰好在开始时间和结束时间之间到最后一秒,但我不知道该怎么做。
您可以只使用:
if (startTime < now && now < endTime)
注意:
- 这不检查日期;看起来这不是问题
- 根据您这样做的原因,您可能需要考虑时间间隔,例如“晚上 10 点到凌晨 2 点”,此时您实际上想要反转逻辑
在大多数情况下,下限包含和上限排除是值得的,例如
if (startTime <= now && now < endTime)
这很有用,因为您可以有多个间隔,其中一个间隔的结束是下一个间隔的开始,并且任何一次都恰好在一个间隔中。
要处理“晚上 10 点到凌晨 2 点”示例,您需要如下内容:
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;
}