2015-10-14 218 views
0

如何檢查給定開始日期&結束日期是否削減特定時間段(培訓時間)。檢查時間(開始日期和結束日期)是否削減時間段

我以下:

if ((startdate >= train.getStartDate()) && 
(enddate <= train.getEndDate())) { 
    // doSomething(); 
} 

doSomething()只得到執行,到時是準確的給定的時間週期之間。但是我也希望doSomething()在時間重疊時得到執行。

例如:

  • 開始日期:2015年10月14日15.00
  • 結束日期:2015年10月16日17.00
  • TIMEPERIOD:2015年10月15日10.00 - 2015年10月19日10.00

在這種如果它重疊,我希望doSomething()得到執行。任何解決方案

+0

'java.util.Date'具有'.before'和'.after','DateTime'具有'.isBefore'和'.isAfter',並且它們兩者都有一個平等的概念 – MadProgrammer

+0

在我的情況下,我只有有多長時間的價值。 – Matej

回答

0

如果你想堅持長期價值,我會做以下

if (!((train.getEndDate() < startdate) || (train.getStartDate() > enddate))) {...} 

或者,您可能希望將long -vales轉換爲java.util.Datenew Date(long value)),這樣就可以使用日期 - 類。

也有非常好的Joda time 2.2 API它有一個Interval -class,可提供以下功能

overlap(ReadableInterval interval) 
     Gets the overlap between this interval and another interval. 
+0

非常感謝你,這節省了我的一天。當我有更多時間時,我會嘗試喬達時間。 – Matej

+0

對不起,但我注意到,如果條件無法正常工作,請檢查你的情況是否有任何錯誤? – Matej

+0

你可以舉一個例子,其中的條件不起作用嗎? –

0

日期有afterbefore方法

if (yourDate.after(startDate) && yourDate.before(endDate)) { 
     //doSomething 
    } 
0

您可以用番石榴範圍過嘗試。下面是一個例子:

public class RangesTest { 

SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH.mm"); 

@Test 
public void testDateRange() throws ParseException { 
    Range<Date> timePeriod = createClosedDateRange("15.10.2015 10.00","19.10.2015 10.00"); 

    assertTrue(timePeriod.isConnected(createClosedDateRange("14.10.2015 15.00", "16.10.2015 17.00"))); 
    assertTrue(timePeriod.isConnected(createClosedDateRange("14.10.2015 15.00", "20.10.2015 17.00"))); 
    assertFalse(timePeriod.isConnected(createClosedDateRange("14.10.2015 15.00", "15.10.2015 09.59"))); 
    assertFalse(timePeriod.isConnected(createClosedDateRange("20.10.2015 17.01", "21.10.2015 17.00"))); 
} 

private Range<Date> createClosedDateRange(String startDate, String endDate) throws ParseException { 
    Date startdate= sdf.parse(startDate); 
    Date enddate = sdf.parse(endDate); 
    return Range.closed(startdate, enddate); 
} 

}

相關問題