从IF语句中排除两次差距

时间:2014-08-21 20:06:47

标签: c# console-application timespan

我试图在24小时内从我的IF声明中排除两个空白。

我有4个不同的时间:

  1. dstart = 06:00:00
  2. dend = 19:00:00
  3. start = 02:00:00
  4. end = 03:00:00
  5. now这是当前时间。

    我想编写代码,只有在不属于此类别的情况下才能执行。

      

    如果现在不在之间    19:00:00和02:00:00和
       03:00:00和06:00:00

    这就是我所拥有的。

    if ((now > dend && now < start) || (now > end && now < dstart))
       {
          //skip
       }
    else
       {
          //Do something
       } 
    

    如果now处于以下任何一小时内:

    now = new TimeSpan(04,01,00);  // works
    now = new TimeSpan(05,01,00);  // works
    

    IF声明有效。

    但是,如果时间在这些时间之间

    now = new TimeSpan(19,01,00);  
    now = new TimeSpan(20,01,00);
    now = new TimeSpan(21,01,00);
    now = new TimeSpan(22,01,00);
    now = new TimeSpan(23,01,00);
    now = new TimeSpan(24,01,00);
    now = new TimeSpan(01,01,00);
    

    失败并转到ELSE声明。它不应该。我做错了什么?

1 个答案:

答案 0 :(得分:1)

对于失败的例子,现在是&gt; dend,但不是&lt;开始,现在是&gt;结束,但不是&lt; DSTART。这两种情况都没有通过,所以它会转移到其他地方。

-

if (now >= dend || now <= start  || (now >= end  && now < dstart))
   {
      //skip
   }
else
   {
      //Do something
   }