美文网首页
后端入门----日期类Date和Jdk8特性LocalDate计

后端入门----日期类Date和Jdk8特性LocalDate计

作者: 睡前听卡农 | 来源:发表于2021-07-20 19:11 被阅读0次
    分别使用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等很多方法,这只是其中一种。

    相关文章

      网友评论

          本文标题:后端入门----日期类Date和Jdk8特性LocalDate计

          本文链接:https://www.haomeiwen.com/subject/cmyrmltx.html