2016-04-29 139 views
-2

我有一個要求,我可以每天創建3班。換班時間如下:如何檢查兩個時間範圍是否重疊?

06:00 - 14:00 
14:01 - 22:00 
22:01 - 05:59. 

如何檢查換檔時間不重疊?請注意,在第三種情況下,從小時大於到小時

+0

一下怎麼樣,如果別的嗎? –

+1

只是一個友好的提示,你可能想要閱讀本頁:[如何 - 問問指南](https://stackoverflow.com/help/how-to-ask),所以你可以永遠保證你的問題很容易回答並且儘可能清楚。一定要包括你爲解決你遇到的問題所做的任何努力,以及當你嘗試修復這些問題時發生了什麼。另外不要忘記你的顯示代碼和任何錯誤信息! –

+0

@Matthew Cliatt感謝您的建議。 – RaoPotla

回答

1

最後我已經解決了我自己的問題。如下請見。

public void checkIfTimesOverlapped(){ 


// eft - existed FROM TIME 
// ett - existed TO TIME 
// cft - current entered FROM TIME 
// ctt - current entered TO TIME 
// Note : same FROM TIME and TO TIME is not allowed. so not checking. 

float eft = 22.00f; 
float ett = 05.00f; 
float cft = 23.00f; 
float ctt = 24.00f; 


    if (cft < ctt) { 
     if (eft < ett) { 
      if(cft<=ett && ctt>=eft){ 
       System.out.println("overlapped"); 
      } 

     } else if(eft > ett) { 
      if(!(cft>ett && ctt<eft)){ 
       System.out.println("overlapped"); 
      } 
     } 
    } else if (cft > ctt) { 

     if (eft < ett) { 
      if((cft>=eft && cft<=ett) || (ctt>=eft && ctt<=ett)){ 
       System.out.println("overlapped"); 
      } 

     } else if(eft > ett) { 
      // already one shift existed with FROM TIME > TO TIME. so again FROM TIME > TO TIME is not possible 
      System.out.println("overlapped"); 
     } 

    } 

}

+0

你應該遵循[風格指南](https://google.github.io/styleguide/javaguide.html)。它會使你的代碼更具可讀性,並且更易於調試。以更具描述性的方式命名變量非常重要。您不必包含評論以顯示您的變量的用途。而不是像'eft'和'ett'這樣命名變量,而是命名它們:'existingFrom'和'existingTo'或者'originalFrom'或'originalTo'。 –