文章目录
前言
java1.8中新增加的时间类
一、Instant(表示的是一个时间戳)
可以精确掉纳秒 当用纳秒表示一个时间用一位Long类型是不够的,需要多一点的空间,它的内部是两个Long字段组成的,第一部分表示的是1970年1月1日到现在的秒数,第二部分表示的是纳秒数Instant instant= Instant.now();//获取当前时间
System.out.println(instant);
1.1 Instant的其他方法
//计算5天前的时间
Instant instant1= instant.minus(5, ChronoUnit.DAYS);
System.out.println(instant1);//计算5天前的第二种方法
Instant instant2= instant.minus(5, ChronoUnit.DAYS);
System.out.println(instant2);
1.1.1 比较方法
它提供两种方法用于比较isAfter()和isBefore()
1.1.2得到秒数
//得到秒数
Instant now= Instant.now();
System.out.println(now.getEpochSecond());//秒
System.out.println(now.toEpochMilli());//毫秒
1.2 转换
因为Instant是时间戳,所以加上一个时区就可以创建ZonedDateTime然后就可以获得对应时区的LocalDateTime了。
下面是转换的关系图
二、LocalTime(不带时区的时间)
1.基本方法
//获取当前时间包含毫秒数---打印出->15:46:22.300
LocalTime localTime= LocalTime.now();//构建时间---打印出->12:20:13
LocalTime localTime1= LocalTime.of(12,20,13);//获取当前时间不包含毫秒数---打印出来->15:49:37
LocalTime localTime2= localTime.withNano(0);//字符串可以转为时间---打印出来->12:15:12
LocalTime localTime3= LocalTime.parse("12:15:12");//判断localTime是否比localTime2晚
System.out.println(localTime.isAfter(localTime2));//修改毫秒值
System.out.println(localTime.withNano(22345));
三、LocalDate(不带时区的日期)
## 3.1常用方法 LocalDate localDate= LocalDate.now();//获得2020年的第23天
localDate= LocalDate.ofYearDay(2020,23);//2013年8月10日
localDate= LocalDate.of(2013, Month.AUGUST,10);
四、LocalDateTime
它是LocalDate和LocalTime的组合体,表示不带时区的日期和时间。