1. 时间操作类

LocalDate:不包含具体时间的日期。
LocalTime:不含日期的时间。
LocalDateTime:包含日期及时间。

2. 常见API

LocalDate today = LocalDate.now();
System.out.println("今天⽇日期:" + today);
//获取年,月,日,周几
System.out.println("现在是哪年年:"+today.getYear());
System.out.println("现在是哪⽉月:"+today.getMonth());
System.out.println("现在是哪⽉月(数字):"+today.getMonthValue());
System.out.println("现在是⼏几号:"+today.getDayOfMonth());
System.out.println("现在是周⼏几:"+today.getDayOfWeek());//加减年年份, 加后返回的对象才是修改后的,旧的依旧是旧的

LocalDate changeDate =  today.plusYears(1);
System.out.println("加后是哪年:"+changeDate.getYear());
System.out.println("旧的是哪年:"+today.getYear());

//日期比较
System.out.println("isAfter: "+changeDate.isAfter(today));

3. 日期时间格式化

jdk8之前,使用SimpleDateFormat来进行格式化操作,但是它并不是线程安全的。

jdk8之后,我们引入线程安全的DateTimeFormatter来格式化时间

LocalDateTime localDateTime = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
System.out.println(formatter.format(localDateTime));

4. 获得指定的日期

LocalDateTime ldt = LocalDateTime.of(2020, 8, 4, 10, 20, 30);
System.out.println(ldt);

5. 计算日期时间差java.time.Duration

LocalDateTime nowTime = LocalDateTime.now();
LocalDateTime changeTime = nowTime.plusDays(1);

Duration duration = Duration.between(nowTime, changeTime);
System.out.println(duration.toDays());

而是用LocalDateTime就没有这个问题:

LocalDateTime now = LocalDateTime.now();
Duration duration = Duration.between(now, now);

// 0
System.out.println(duration.toDays());

所以我们可以使用atStartOfDay()方法将LocalDate转化为LocalDateTime进行计算

LocalDate now = LocalDate.now();
Duration duration = Duration.between(now.atStartOfDay(), now.atStartOfDay());

// 0
System.out.println(duration.toDays());
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐