Java在java.time包中提供了一个名为Period的类。这用于计算两个给定日期之间的时间段,例如天,月和年等。
此类的between()方法接受两个LocalDate对象,并找出两个给定日期(年,月和日的数量)之间的时间段,并作为时间段对象返回。
从此,你可以提取的天数,月数和年期间在使用之间getDays()
,getMonths()
和,getYears()
分别。
如果您已经有了一个人的出生日期,请查找年龄-
从用户那里获取出生日期。
将其转换为LocalDate对象。
获取当前日期(作为LocalDate对象)
使用between()方法找到这两个日期之间的时间段-
Period period = Period.between(dateOfBirth, LocalDate.now());
得到几天,几个月,从周期对象常年使用getDays()
,getMonths()
并且,getYears()
方法为-
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"); //将给定的String解析为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("Enter your name: "); String name = sc.next(); System.out.println("Enter your date of birth (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"); } }
输出结果
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