2015-10-09 5 views
3

Я хочу, чтобы сравнить две даты в моем приложенииAndroid - Сравнить две даты

Первая дата будет сегодняшняя дата Второй будет поступать из базы данных

Чтобы сохранить вторую дату мой код выглядит следующим образом ; (Используются дата завтрашней, чтобы сохранить его простым)

Calendar calendar = Calendar.getInstance(); 
calendar.add(Calendar.DAY_OF_YEAR, 1); 
Date tomorrow = calendar.getTime(); 
DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); 

String tomorrowAsString = dateFormat.format(tomorrow); 

Так tomorrowAsString (10-Oct-2015) хранятся в таблице в моей базе данных

В другой форме я извлечение этой даты и положить его в строку

String steepingDate = (c.getString(3)); 

Я предполагаю, что мне нужно будет преобразовать эту строку в формат даты, а затем использовать следующее, чтобы получить сегодняшнюю дату;

Calendar calendar = Calendar.getInstance(); 
Date today = calendar.getTime(); 
DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); 

String todayAsString = dateFormat.format(today); 

Вот где я застрять, как я не знаю, как превратить steepingDate в Date, а затем, что является фактическим способ сравнения строк, я попытался поиск в Интернете, но есть так много разных способов, которые я пробовал, и ни один из них до сих пор не работал. Я хочу знать, какой один из этих двух терке

EDIT:

Я объединил некоторые ответы и придумать следующее;

do { 
     String steepingDate = (c.getString(3)); 
     SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy"); 
     Date steepingdate = formatter.parse(steepingDate); 

     Calendar calendar = Calendar.getInstance(); 
     Date today = calendar.getTime(); 

     if(today.compareTo(steepingdate)>0) 
     { 
     CompleteSteeping.add(c.getString(1)); 
     } 
     i += 1; 
    }while (c.moveToNext()); 

Однако на;

SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy"); 
Date steepingdate = formatter.parse(steepingDate); 

Я получаю сообщение об ошибке с указанием

«дата: не поддается синтаксическому анализу«java.util.GregorianCalender [время = 1444461352665, areFieldsSet = верно, Ienient = True \ зона = GMT, firstDayOfWeek = 1, minimalDaysInFirstWeek = 1, ЭРА = 1, год = 2015, МЕСЯЦ = 9, WEEK_OF_YEAR = 41, WEEK_OF_MONTH = 2, DAY_OF_MONTH = 10, day_of_year = 283, DAY_OF_WEEK = 7, DAY_OF_WEEK_IN_MONTH = 2, AM_PM = 0, ЧАС = 7, HOUR_OF_DAY = 7 , МИНУТЫ = 15, ВТОРОЕ = 52, миллисекунду = 665, ZONE_OFFSET = 0DST_OFFSET = 0]»(по смещению 0)

+0

Сравните, каким образом? Две даты не равны или какая дата на первом месте? –

ответ

2

Если вы просто хотите, чтобы сравнить Струны было бы выглядеть следующим образом:

Calendar calendar = Calendar.getInstance(); 
    calendar.add(Calendar.DAY_OF_YEAR, 1); 
    Date tomorrow = calendar.getTime(); 
    DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy"); 

    String tomorrowAsString = dateFormat.format(tomorrow); 

    calendar = Calendar.getInstance(); 
    Date today = calendar.getTime(); 

    String todayAsString = dateFormat.format(today); 

    if(tomorrowAsString.equals(todayAsString)) 
     System.out.println(true); 
    else 
     System.out.println(false); 
+0

Спасибо за ваш ответ, я должен был быть более ясным в своем вопросе, это не просто знание, равны ли они, или нет, это знает, какая из них - терка. – Sjharrison

+0

Итак, тогда ответ от Амита Десале будет работать для вас. ;) – Surro

+0

Я обновил свой вопрос как получение ошибки на то, что я пробовал – Sjharrison

1

Вот где я застрять, как я не знаю, как превратить steepingDate в Дату

Вам нужно создать экземпляр SimpleDateFormat с скороговоркой, который соответствует строке, которую вы сохранили, и вызовите parse на него.

, а затем, что является фактическим способом сравнения строк, я попытался глядя в Интернете, но есть очень много различных способов, которые я пробовал и никто до сих пор не работал

если вам нужно сравнить дату, чтобы понять, меньше ли/больше/равно, чем, тогда Date имеет метод compareTo, который возвращает int < 0, если эта дата меньше указанной даты, 0, если они равны, и int> 0, если эта дата больше.

+0

Я обновил свой вопрос как ошибку на то, что я пробовал – Sjharrison

+0

, в каком формате ваша дата? – Blackbelt

+0

В вопросе 'завтраAsString (10-Oct-2015)', но это строка называется steepingDate Однако я только что заметил, что у меня был dd/MM/yyyy, поэтому теперь я изменил его на dd-MM- yyyy, но все равно получить ошибку – Sjharrison

1

Вы можете преобразовать String дату Date и сравнить его

Используйте класс SimpleDateFormat:

private Date parseDate(String date, String format) throws ParseException 
{ 
    SimpleDateFormat formatter = new SimpleDateFormat(format); 
    return formatter.parse(date); 
} 
Usage: 

Date date = parseDate("19/05/2009", "dd/MM/yyyy"); 
+0

Я обновил свой вопрос как получение ошибки на то, что я пробовал – Sjharrison

7
try{ 
    SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); 

    String str1 = "9/10/2015"; 
    Date date1 = formatter.parse(str1); 

    String str2 = "10/10/2015"; 
    Date date2 = formatter.parse(str2); 

    if (date1.compareTo(date2)<0) 
     { 
     System.out.println("date2 is Greater than my date1");       
     } 

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

Я обновил свой вопрос как получение ошибки на то, что я пробовал – Sjharrison

+0

Вам, должно быть, нужно заменить замену SimpleDateFormat ("dd-MMM-yyyy «); с этим SimpleDateFormat («dd/MM/yyyy»); –

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