У меня проблема, когда я пытаюсь сравнить две даты в Android. Я не уверен, если это проблема с эмулятором или у меня есть проблема в самом коде.
Дело в том, что код работает в обычной программной среде Java, что смущает меня еще больше.
У меня есть следующий код для сравнения дат в Android 2.1:
public boolean compareDates(String givenDateString) {
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
boolean True;
try {
True = false;
Date givenDate = sdf.parse(givenDateString);
Date currentDate = new Date();
if(givenDate.after(currentDate)){
True = true;
} if(givenDate.before(currentDate)){
True = false;
} if(givenDate.equals(currentDate)){
True = false;
}
} catch (Exception e) {
Log.e("ERROR! - comparing DATES", e.toString());
}
return True;
}
теперь код хорошо работает в Java, но в Android он продолжает возвращать мне false.
Единственное изменение происходит, когда я вставляю переменную currentDate со строкой, подобной этой:
Date currentDate = sdf.parse("16:50");
Когда переменная currentDate установлена в строку, она возвращает true, когда я сравниваю ее со значением, которое происходит после указанного времени. Я также попытался установить переменную currentDate с помощью:
Calendar calendar = Calendar.getInstance();
Date currentDate = calendar.getTime();
Я совершенно растерялся. Надеюсь, у кого-то есть идеи о том, что может быть проблемой здесь.
--- РЕДАКТИРОВАТЬ ---
Нашел решение для моей проблемы. Я использовал календарь и прочитал часы и минуты оттуда, затем поместил их в строку для анализа, и это сработало. Код теперь выглядит так:
public boolean compareDates(String givenDateString) {
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
boolean True = false;
try {
Date givenDate = sdf.parse(givenDateString);
Calendar now = Calendar.getInstance();
int hour = now.get(Calendar.HOUR_OF_DAY);
int minute = now.get(Calendar.MINUTE);
Date currentDate = sdf.parse(hour + ":" + minute);
if(givenDate.after(currentDate)){
True = true;
} if(givenDate.before(currentDate)){
True = false;
} if(givenDate.equals(currentDate)){
True = false;
}
} catch (Exception e) {
Log.e("ERROR! - comparing DATES", e.toString());
}
return True;
}