当前位置 : 主页 > 编程语言 > java >

Java8实战之时间日期操作

来源:互联网 收集:自由互联 发布时间:2022-12-20
Java8实战之时间日期操作 前言 前面我们已经基本学习完Java8中应用场景比较广泛的新功能或者说新特性,在本小节中,我们再来学习多一个新特性,时间日期操作。 时间日期操作 在J

Java8实战之时间日期操作

前言

前面我们已经基本学习完Java8中应用场景比较广泛的新功能或者说新特性,在本小节中,我们再来学习多一个新特性,时间日期操作。

时间日期操作

在Java8之前,由于JDK本身设计的问题,导致了存在的时间日期API使用起来不是很好用,其语义也不是很好,比如​​Date​​表示的是时间以及日期,为了使得时间日期相关的API操作起来比较方便,语义更好,Java8中加入了新的时间以及日期操作,位于​​java.time​​包中

在​​java.time​​包中有许多的类,不过我们关心的主要有以下几个

  • ​​LocalDate​​,日期操作类
  • ​​LocalTime​​,时间操作类
  • ​​LocalDateTime​​,日期时间
  • ​​Duration​​,时间间隔
  • ​​Period​​,日期间隔

LocalDate

正如其名,​​LocalDate​​表示的是本地的日期,根据OS的设置来获取对应的时区等信息,其用法也非常简单

// 获取某个时间的对象LocalDate date = LocalDate.of(2018, 8, 14);// 通过该对象可以获取年月日等信息,其API比较见名知义,就不展开介绍了int year = date.getYear();Month month = date.getMonth();int day = date.getDayOfMonth();DayOfWeek dow = date.getDayOfWeek();int len = date.lengthOfMonth();boolean leap = date.isLeapYear();// 获取当前日期LocalDate today = LocalDate.now();// 解析日期字符串LocalDate date1 = LocalDate.parse("2018-08-14");

LocalTime

​​LocalTime​​表示的是当前的时间,其主要用法如下

// 获取当前时间LocalTime time = LocalTime.now();System.out.println(time.getHour());System.out.println(time.getMinute());System.out.println(time.getSecond());System.out.println(time.getNano());// 解析时间字符串LocalTime time1 = LocalTime.parse("13:45:20");

LocalDateTime

​​LocalDateTime​​表示的是日期以及时间,大致等于以前的Date对象

LocalDateTime dt1 = LocalDateTime.of(LocalDate.now(), LocalTime.now());LocalDateTime dt2 = LocalDateTime.of(2018, Month.JULY, 24, 9, 32, 20);LocalDateTime dt3 = LocalDate.now().atTime(13, 45, 20);LocalDateTime dt4 = LocalDate.now().atTime(LocalTime.now());LocalDateTime dt5 = LocalTime.now().atDate(LocalDate.now());LocalDate date = dt1.toLocalDate();LocalTime time = dt2.toLocalTime();

Duration

Duration表示的是两个时间的间隔,注意不能用于表示两个日期间隔

Duration d1 = Duration.between(LocalTime.now(), LocalTime.now());Duration d3 = Duration.between(Instant.now(), Instant.now());Duration threeMinutes = Duration.ofMinutes(3);Duration threeMinutess = Duration.of(3, ChronoUnit.MINUTES);

Period

Period表示的是两个日期的间隔,注意不能用来表示两个时间间隔

Period p1 = Period.between(LocalDate.now(), LocalDate.now());Period tenDays = Period.ofDays(10);Period threeWeeks = Period.ofWeeks(3);

当然,在Java8中还提供了其他很多的操作,比如时间或者日期的增加、减少,将日期调整到某一天等,由于使用起来相对比较简单,所有在使用时直接参考官方API即可

Java8实战之时间日期操作_时间日期

总结

本小节主要简单地介绍了Java8中新的日期以及时间操作API,由于新的API语义性非常好,所以也没有过多地展开,在需要的时候查一下文档就足够了。

上一篇:没有了
下一篇:没有了
网友评论