2013-08-03 103 views
0

我想要一些Java代碼,它會根據當前時間告訴我學校何時開放。在java中檢查時間間隔

當我在上午9點和下午6點之間調用此方法時,應該返回「學校開放」,否則應在下午6點之後和上午9點之前返回「學校關閉」。

public Calendar shopStartTime(String msg) 
{ 
    Calendar currentTime = Calendar.getInstance(); 
    Calendar schoolTime = Calendar.getInstance(); 
    Calendar schoolClosedTime = Calendar.getInstance(); 
    schoolTime.set(Calendar.HOUR_OF_DAY, 9); 
    schoolTime.set(Calendar.MINUTE, 0); 
    schoolTime.set(Calendar.SECOND, 0); 
    schoolTime.set(Calendar.MILLISECOND, 0); 
    schoolClosedTime.set(Calendar.HOUR_OF_DAY, 18); 
    schoolClosedTime.set(Calendar.MINUTE, 0); 
    schoolClosedTime.set(Calendar.SECOND, 0); 
    schoolClosedTime.set(Calendar.MILLISECOND, 0); 
    if (schoolTime.compareTo(currentTime) <= 0 && 
     (currentTime.compareTo(schoolClosedTime)>=0)) 
    { 
     // check for time 
     Toast.makeText(getSherlockActivity(), "school is closed ", 
      Toast.LENGTH_SHORT).show(); 
    } 
    else 
    { 
     Toast.makeText(getSherlockActivity(), " school is open", 
      Toast.LENGTH_SHORT).show(); 
    } 
    return currentTime; 
} 

但代碼不工作,因爲它總是返回相同的結果。我如何測試一次是否在兩個其他時間之間?

+0

不應該是:「... && currentTime.compareTo(schoolClosedTime)<= 0)」? (小於,不大於) – Whistletoe

+0

我試過兩種方法,結果相同。 –

回答

3

閱讀的javadoc!

if (currentTime.after(schoolTime) && currentTime.before(schoolClosedTime)) { 
    // school is open 
} else { 
    // school is closed 
} 
0

檢查,如果小時 &小時> 18: (或別的東西)

Calendar currentTime = Calendar.getInstance(); 
int hour = currentTime.get(Calendar.HOUR_OF_DAY); 

你只需要一個日曆

0

除此之外,你已經使用Calendar,另一種簡單的方法是:

private boolean inRange(Date now) throws ParseException { 
    final Date start = new SimpleDateFormat("HH.mm.ss").parse("09.00.00"); 
    final Date end = new SimpleDateFormat("HH.mm.ss").parse("18.00.00"); 
    return now.after(start)&& now.before(end); 
} 

您可以使用Calendarbefore()after()爲好。