文章目录
前言
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的组合体,表示不带时区的日期和时间。