2013-08-03 2 views
0

Мне нужен Java-код, который скажет мне, когда школа будет открыта в зависимости от текущего времени.Проверка интервала времени в java

Когда я вызываю этот метод между 9AM и 6PM, он должен вернуться «школа открыта», иначе она должна вернуться «школа закрыта» после 18:00 и до 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

Читать Javadocs!

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); 
} 

Вы можете использовать before() и after() из Calendar, а также.

Смежные вопросы