Issue
Hello all I am creating a program for finding the date of birth when the exact age is given. For example if age of a man is 21 years 10 months and 22 days(up to current date) how can i find the exact date of birth. I will be thankful if anyone help me with isuue.
What i tried is here.
here d,m and y are text field for days months and years.
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
int da = Integer.parseInt(d.getText());
da = -da;
int mo = Integer.parseInt(m.getText());
mo = -mo;
int ye = Integer.parseInt(y.getText());
ye = -ye;
SimpleDateFormat ddd = new SimpleDateFormat("dd");
SimpleDateFormat mmm = new SimpleDateFormat("MM");
SimpleDateFormat yyy = new SimpleDateFormat("yyyy");
Calendar cal = Calendar.getInstance();
cal.getTime();
cal.add(Calendar.DATE, da);
cal.set(Integer.parseInt(yyy.format(cal.getTime())), Integer.parseInt(mmm.format(cal.getTime())), Integer.parseInt(ddd.format(cal.getTime())));
cal.add(cal.MONTH, mo);cal.set(Integer.parseInt(yyy.format(cal.getTime())), Integer.parseInt(mmm.format(cal.getTime())), Integer.parseInt(ddd.format(cal.getTime())));
cal.add(cal.YEAR, ye);
System.out.println(getDate(cal));
}
My problem is if I enter 21 year 10 months and 22 days as the age of a person the date given by compiler is 18/12/1992 but actual date should be 17/10/1992. Please help me with this issue.
Solution
Here is Java 8 solution implemented by Date & Time API:
int dobYear = 21;
int dobMonth = 10;
int dobDay = 22;
LocalDate now = LocalDate.now();
LocalDate dob = now.minusYears(dobYear)
.minusMonths(dobMonth)
.minusDays(dobDay);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
System.out.println(dob.format(formatter));
Output: 18/10/1992
.
Answered By - Tapas Bose
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.