I need to accept the birthday entered by the user (preferably in the format dd/mm//yyyy ) and find their age based on today's date. Can someone explain to me the process that I have to go through to find this? I need to print it in the format:
"You are 19 years old, 4 months, 12 days, 8 hours, 44 minutes and 39 seconds."
I got a little confused about how to subtract the date from another date and how I will refer each part (years, months, days, hours, etc.) separately.
The code that I currently have for reference:
import java.sql.Date; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Scanner; public class Driver { public Driver(){} public static void main( String[] args){ Driver menu = new Driver(); MenuOptions option; do{ menu.displayMenu(); option = menu.getResponse(); menu.runOption(option); }while(option != MenuOptions.Quit); } private enum MenuOptions{ AgeCalc("Calculate your age"), AnniversaryCalc("Calculate time until specified date"), AgeDifference("Find the time between two specified dates"), Quit("Exit the program"); private String value; private MenuOptions(String value){ this.value = value; } public String toString(){ return value; } } public void displayMenu(){ for(MenuOptions option : MenuOptions.values()){ System.out.printf("%5d: %s\n", option.ordinal()+1, option); } } public MenuOptions getResponse(){ int value = -1; Scanner input = new Scanner(System.in); do{ System.out.println("> "); String response = input.nextLine(); if(response.matches("\\d+")){ value = Integer.parseInt(response); if(value < 1 || value > MenuOptions.values().length){ value = -1; System.out.println("Unknown response, please enter a number between 1 and " +MenuOptions .values().length); } } }while(value <=0); return MenuOptions.values()[value-1]; } public void runOption(MenuOptions option){ Scanner in = new Scanner(System.in); switch(option){ case AgeCalc: System.out.println("Please enter your birthday mm/DD/yyyy)."); System.out.println(">"); DateFormat df = new SimpleDateFormat("mm/DD/yyyy"); try { java.util.Date birthday = df.parse(in.nextLine()); System.out.println("Today = " + df.format(birthday)); } catch (ParseException e) { e.printStackTrace(); } Calendar today = Calendar.getInstance(); java.util.Date today = df.format(); DateFormat simple = new SimpleDateFormat("dd/MM/yyyy"); String birthdate = simple.format(in.nextLine()); Date.parse(birthdate); System.out.println(birthdate.toString()); break; case AnniversaryCalc: System.out.printf("PI: %.20f\n", Math.PI); break; case AgeDifference: for(int p=0; p <= 32; p++){ System.out.println("2^" +p+" = " +Math.pow(2,p)); } } } }
source share