2015-12-09 3 views
1

Я пытаюсь сравнить 2 даты 1 проходит мимо параметра от пользователя, а другой - текущая дата. теперь для следующего кода он работает только в том случае, если интервал между двумя датами является бигером, чем 1. , например, если я выбираю дату 10/12/2015, а текущая дата равна 9/12/15, я получил значение false, но если выбранный дата - 11/12/15, а текущая дата - 9/12/15, я прав.Сравнение дат в java не работает как ожидалось

это мой код:

chosen_date = bundle.getString("date"); 
if ((new SimpleDateFormat("dd/MM/yyyy").parse(chosen_date).getTime()/(1000 * 60 * 60 * 24)) > System.currentTimeMillis()/(1000 * 60 * 60 * 24)) { 
    datecompre = true; 
    Log.d("date equ","date is bigger"); 
} else { 
    datecompre = false; 
    Log.d("date equ","date is smaller"); 
} 
+0

Просто поменять истинного и ложного в случае-ELSE заявления? –

+0

, но если я поменю его, когда я выберу дату, которая больше, чем текущая дата, по крайней мере за 2 дня, она попадет в ложь. вы можете видеть, что я становлюсь ложным только тогда, когда интервал равен или меньше 1 дня. –

+0

Вы имеете в виду 9/12/2015 или 9/12/15 – farrellmr

ответ

3

Я предлагаю вам использовать Date.after() и Date.before() методы.

Это пример:

try{ 

    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); 
    Date date1 = sdf.parse("yourFirstDate"); //or just "new Date();" if you want the current date 
    Date date2 = sdf.parse("yourSecondDate"); 

    if(date1.after(date2)){ 
     Log.d("Date1 is after Date2"); 
    } else if(date1.before(date2)){ 
     Log.d("Date1 is before Date2"); 
    } else { 
     Log.d("Date1 is equal Date2"); 
    } 

}catch(ParseException e){ 
    e.printStackTrace(); 
} 
+0

, как я могу сравнить его с текущей датой? –

+0

* new Date(); * вернет текущую дату. – Rami

+0

Я думаю, что OP хочет сравнить конкретные дни (как в октябре 1-го 1990 года), а не даты (как в миллисекундах с эпохи) – ftr

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