已知出生日期如何计算年龄?使用Java?


Java在`java.time`包中提供了一个名为**Period**的类。它用于计算两个给定日期之间的时间段(例如,天数、月数和年数)。

此类的**between()**方法接受两个**LocalDate**对象,并计算这两个给定日期之间的时间段(年数、月数和天数),并将其作为Period对象返回。

您可以分别使用getDays()、getMonths()和getYears()方法提取此期间的天数、月数和年数。

计算年龄

如果您已经知道一个人的出生日期,要计算其年龄:

  • 从用户处获取出生日期。
  • 将其转换为**LocalDate**对象。
  • 获取当前日期(作为LocalDate对象)。
  • 使用**between()**方法计算这两个日期之间的时间段:
Period period = Period.between(dateOfBirth, LocalDate.now());
  • 使用getDays()、getMonths()和getYears()方法从Period对象中获取天数、月数和年数:

period.getYears();
period.getMonths();
period.getDays();

示例

下面的示例从用户处读取姓名和出生日期,将其转换为**LocalDate**对象,获取当前日期,计算这两个日期之间的时间段,并将其作为天数、月数和年数打印出来。

 在线演示

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.Instant;
import java.time.LocalDate;
import java.time.Period;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.Date;
import java.util.Scanner;
public class CalculatingAge {
   public static Date StringToDate(String dob) throws ParseException{
      //Instantiating the SimpleDateFormat class
      SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
      //Parsing the given String to Date object
      Date date = formatter.parse(dob);
      System.out.println("Date object value: "+date);
      return date;
   }
   public static void main(String args[]) throws ParseException {
      //Reading name and date of birth from the user
      Scanner sc = new Scanner(System.in);
      System.out.println("Enter your name: ");
      String name = sc.next();
      System.out.println("Enter your date of birth (dd-MM-yyyy): ");
      String dob = sc.next();
      //Converting String to Date
      SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
      Date date = formatter.parse(dob);
      //Converting obtained Date object to LocalDate object
      Instant instant = date.toInstant();
      ZonedDateTime zone = instant.atZone(ZoneId.systemDefault());
      LocalDate givenDate = zone.toLocalDate();
      //Calculating the difference between given date to current date.
      Period period = Period.between(givenDate, LocalDate.now());
      System.out.print("Hello "+name+" your current age is: ");
      System.out.print(period.getYears()+" years "+period.getMonths()+" and "+period.getDays()+" days");
   }
}

输出

Enter your name:
Krishna
Enter your date of birth (dd-MM-yyyy):
26-07-1989
Hello Krishna your current age is: 29 years 10 and 5 days

更新于:2020-06-29

5K+ 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告