已知出生日期如何计算年龄?使用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
广告