2013-02-26 2 views
0

У меня есть дата в формате String как String dob="02/26/2013"; которая имеет формат «мм/дд/гггг». Его дата рождения, и я хочу проверить, что этот dob должен быть меньше сегодняшней даты. Как это проверить?сравнение даты в java для даты рождения

Вот мой код:

Calendar cal = Calendar.getInstance(); 
    Date date = cal.getTime(); 
    SimpleDateFormat format1 = new SimpleDateFormat("MM-dd-yyyy"); 
    String date1 = format1.format(date); 
    System.out.println(date1); 
    String date2 = "2013/02/26"; 
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/mm/dd"); 
    Date convertedDate = dateFormat.parse(date2); 
    System.out.println(convertedDate); 

но convertedDate печатает, как Sat Jan 26 00:02:00 IST 2013

+3

Что вы пробовали? (Я бы рекомендовал использовать Joda Time, а не java.util.Calendar/java.util.Date, кстати.) –

+0

Календарь cal = Calendar.getInstance(); \t \t Дата дата = cal.getTime(); \t SimpleDateFormat format1 = new SimpleDateFormat ("MM-dd-yyyy"); \t Строка date1 = format1.format (date); System.out.println (date1); \t Строка date2 = "2013/02/26"; \t \t SimpleDateFormat dateFormat = new SimpleDateFormat ("yyyy/mm/dd"); \t Дата convertDate = dateFormat.parse (date2); System.out.println (convertDate); – user2025528

+0

вместо того, чтобы помещать код в комментарий, отредактируйте ваш вопрос. –

ответ

1
String dob="02/27/2013"; 
    Date today = new Date(); 

    try { 
     Date dobDate = new SimpleDateFormat("MM/dd/yyyy").parse(dob); 

     if (dobDate.compareTo(today) <= 0) { 
      //before or equals today 
      System.out.println("before"); 
     } 
    } catch (ParseException e) { 
     //handle exception 
    } 
+0

эй, ее работая отлично, но на сегодняшний день дата также сводится к тому, что в цикле dob не должно быть четным сегодняшняя дата – user2025528

+0

@ user2025528, попробуйте с обновлением '<=' –

+0

Спасибо, работая отлично сейчас :) – user2025528

1
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy"); 

     Calendar cal = Calendar.getInstance(); 
     String strDate = sdf.format(cal.getTime()); 

     Date date1 = sdf.parse("02/26/2013"); 
     Date date2 = sdf.parse(strDate); 

    if(date1.compareTo(date2)>0){ 
      System.out.println("Date1 is after Date2"); 
     }else if(date1.compareTo(date2)<0){ 
      System.out.println("Date1 is before Date2"); 
     }else if(date1.compareTo(date2)==0){ 
      System.out.println("Date1 is equal to Date2"); 
     } 
+0

Я пробовал этот код, но m получал ошибку конвертировать date2 в строку по строке 3 – user2025528

+0

Я думаю, теперь он будет работать – PSR

+0

проверить nikolay ответ ниже его гораздо короче – user2025528

0

Вы могли бы взглянуть на Joda время, вы можете также попытаться преобразовать строку в объект календаря и при необходимости используйте методы до или после. Для получения дополнительной информации прочитайте Javadoc для классов DateFormat и Calendar.

+0

Кроме того, если язык не является английским – user2025528

+0

@ user2025528 - Почему бы языковой вопрос в случай вроде этого? –

-2

Вы можете попробовать это

String yourdate = "02/26/2013"; 
Date toDate = new SimpleDateFormat("MM/dd/yyyy").parse(yourdate); 
long toDateAsTimestamp = toDate.getTime(); 
long currentTimestamp = System.currentTimeMillis(); 
long getRidOfTime = 1000 * 60 * 60 * 24; 
long toDateAsTimestampWithoutTime = toDateAsTimestamp/getRidOfTime; 
long currentTimestampWithoutTime = currentTimestamp/getRidOfTime; 

if (toDateAsTimestampWithoutTime <= currentTimestampWithoutTime) { 
    System.out.println("Display error."); 
} else { 
    System.out.println("All ok"); 
} 
+0

его ошибка отображения на дисплее даже для «02/27/2013», но для «02/28/2013» его печать все ок – user2025528

1

new SimpleDateFormat("yyyy/mm/dd"); неправильно. mm - это минуты, поэтому вы получаете 2 минуты после полуночи 26 января. Изменить mm на MM

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