Вот подсказка, как вы могли бы прочитать и проанализировать введенную дату:
SimpleDateFormat f = new SimpleDateFormat("MM/dd/yyyy"); //note that mm is minutes, so you need MM here
Scanner s = new Scanner( System.in );
String dateLine = s.nextLine();
try
{
Date d = f.parse( dateLine );
System.out.println(d);
}
catch( ParseException e )
{
System.out.println("please enter a valid date in format mm/dd/yyyy");
}
Это всего лишь пример, и вы должны начать правильно читать дату.
Для получения лет, дней и месяцев между двумя датами я все равно рекомендую использовать JodaTime, поскольку это значительно облегчает жизнь.
Используя стандартные средства Java, это может помочь вам:
Calendar c = Calendar.getInstance();
c.setTimeInMillis( System.currentTimeMillis() - d.getTime() );
System.out.println( c.get( Calendar.YEAR ) - 1970 ); //since year is based on 1970, subtract that
System.out.println( c.get( Calendar.MONTH ) );
System.out.println( c.get( Calendar.DAY_OF_MONTH ) );
Обратите внимание, что вам нужно вычесть меньшую дату из большей, то есть разница должна быть положительной (что должно быть верно при вычитании дат рождения из текущего времени).
Это дало бы разницу в 0 лет, 9 полных месяцев и 26 дней с 1 января 2011 года по 26 октября 2011 года и разницу в 21 год и 1 день (поскольку мы уже начали этот день) между 26 октября 1990 года и октябрем 26th 2011.