如何在已知出生日期的情况下查找年龄?使用 Java?
java 8object oriented programmingprogramming更新于 2025/4/29 1:37:17
Java 在 java.time 包中提供了一个名为 Period 的类。这用于计算两个给定日期之间的时间段,以天、月、年等形式表示。
此类的 between() 方法接受两个 LocalDate 对象,并找出两个给定日期之间的时间段(年、月、天数),并返回一个时间段对象。
由此,您可以分别使用 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{ //实例化 SimpleDateFormat 类 SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy"); //将给定的字符串解析为 Date 对象 Date date = formatter.parse(dob); System.out.println("Date object value: "+date); return date; } public static void main(String args[]) throws ParseException { //从用户那里读取姓名和出生日期 Scanner sc = new Scanner(System.in); System.out.println("输入您的姓名:"); String name = sc.next(); System.out.println("输入您的出生日期 (dd-MM-yyyy):"); String dob = sc.next(); //将字符串转换为日期 SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy"); Date date = formatter.parse(dob); //将获取的 Date 对象转换为 LocalDate 对象 Instant instant = date.toInstant(); ZonedDateTime zone = instant.atZone(ZoneId.systemDefault()); LocalDate givenDate = zone.toLocalDate(); //计算给定日期与当前日期之间的差值。 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"); } }
输出
输入您的姓名: Krishna 输入您的出生日期 (dd-MM-yyyy): 26-07-1989 Hello Krishna your current age is: 29 years 10 and 5 days