当时间落在时间范围之间时返回True?

Bak*_*erh 3 c#

我正在制作一个功能来检查24小时格式的时间范围之间的时间,但是我的代码有一些问题,任何人都可以指出如何修复?

我的代码:

bool isDoTime(int starthour, int startminute, int endhour, int endminute)
    {
        TimeSpan start = new TimeSpan(starthour, startminute, 0); 
        TimeSpan end = new TimeSpan(endhour, endminute, 0);
        TimeSpan add24h = new TimeSpan(24, 0, 0);
        TimeSpan now = DateTime.Now.TimeOfDay;


        if (starthour > endhour || (endhour == starthour && endminute <= startminute))
        {
            end += add24h;
        }
        if ((now > start) && (now < end))
        {
            return true;
        }

        return false;
    }
Run Code Online (Sandbox Code Playgroud)

问题:我想在20:30 - 3:30之间的当前时间返回true,但是当我运行下面的代码时.条件仅在8:30到00:00之间返回true,而在00:00 - 3:30之间不是这样

if (isDoTime(20,30,3,30) //return true from 20:30  - 3:30 
{
   //dosomething
}
Run Code Online (Sandbox Code Playgroud)

awe*_*awe 5

如果它跨越midninght,则在一个支票中分开,一个支票在同一天分开.

TimeSpan start = new TimeSpan(starthour, startminute, 0); 
TimeSpan end = new TimeSpan(endhour, endminute, 0);
TimeSpan now = DateTime.Now.TimeOfDay;

//The readable version:
if(start>end){
  //Must check if after start (before midnight) or before end (after midnight)
  if((now > start) || (now < end)){
    return true;
  {
}
else
{
  //Simple check - span is within same day
  if ((now > start) && (now < end))
  {
    return true;
  }
}
return false;
Run Code Online (Sandbox Code Playgroud)

简短/神秘的版本:

return start > end ? (now > start) || (now < end) : (now > start) && (now < end);
Run Code Online (Sandbox Code Playgroud)