Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何知道当前时间是否在两个时间间隔之间?_C#_Asp.net Mvc_Timespan - Fatal编程技术网

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您可以通过编程设置
    nighlight=startTime>endTime
    ,或者在我之前的评论中给出的if语句中用
    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;
    }