后端入门—-日期类Date和Jdk8特性LocalDate计算年龄

分别使用Jdk8和8以前的特性解决一个年龄大小的问题
需求:键盘输入一个年龄,来求年龄到底有多大?

在Jdk8以前的版本中,只能依靠Date()获得当前时间和基准时间,这个基准时间就是1970年8:00,然后利用毫秒数进行计算,然后转换为年。

import java.text.ParseException;
import java.text.SimpleDateFormat;

import java.util.Date;
import java.util.Scanner;

public class DateYear{
    public static void main(String[] args) throws ParseException {
        //键盘录入一个人的生日,例如2000-03-04
        
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入生日");
        String birth=sc.nextLine();
        //先求输入值与1970年之间的时间长度
        Date date1=new Date(0L);
      //这里是进行格式化
        SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:ss:mm");
      //将字符串格式化进行解析
        Date date2 = simpleDateFormat.parse(birth);
        //现在需要的是date2-date1的毫秒数

        long date1Time = date1.getTime();
        long date2Time = date2.getTime();
       
       //我们还需要当前时间毫秒数
        Date date3=new Date();
        long date3Time = date3.getTime();
        //当前时间-(输入时间-基准时间)=你的年龄
        long day=(date3Time-(date2Time-date1Time))/1000/60/60/24;
        long year=(date3Time-(date2Time-date1Time))/1000/60/60/24/365;

        
        System.out.println("你的年龄为:"+year+"岁");
    }
}
我们可以看到,在上面的输入过程中就要输“yyyy-MM-dd HH:ss:mm”,显的很麻烦,我们通常都不使用时分秒。

但是在Jdk8中提供了很多新特性

import java.time.LocalDate;
import java.time.Period;
import java.time.format.DateTimeFormatter;
import java.util.Scanner;

public class LocalDateYear {
    public static void main(String[] args) {
        //键盘录入一个人的生日
        /*
        刚才我们使用了jdk1.8以前版本,现在使用新特性来完成,将使用atTime
         */
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入你的生日,格式为xxxx-xx-xx");
        String birthday=sc.nextLine();
        //这里我们不需要时分秒,我们需要的是年月日,因此我们只需要格式化成年月日即可
        DateTimeFormatter dateTimeFormatter=DateTimeFormatter.ofPattern("yyyy-MM-dd");
        LocalDate localDat1 = LocalDate.parse(birthday,dateTimeFormatter);
        //new一个当前的年月日
        LocalDate localDate2 = LocalDate.now();
        //使用period就可以获得年份
        Period period = Period.between(localDat1, localDate2);

        System.out.println("你的年龄为"+period.getYears()+"岁");
    }
}
因此我们可以看出Jdk8明显简单了很多,Jdk8相比于以前的版本,确实在日期类的计算上方面了很多。
其实还可以使用LocalDate转换为LocalDateTime等很多方法,这只是其中一种。

【信息由网络或者个人提供,如有涉及版权请联系COOY资源网邮箱处理】

© 版权声明
THE END
喜欢就支持一下吧
点赞13赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容