原文网址:
简介
本文用示例介绍LocalDate的用法。LocalDate是Java8新增的。
LocalDate与LocalDateTime的用法很接近。LocalDateTime详见:LocalDateTime--使用/教程/实例_IT利刃出鞘的博客-CSDN博客
常用操作
日期差值
获取两个LocalDate的相差天数
// 如果是 now.until(before, ChronoUnit.DAYS), 返回的结果是负数
LocalDate before = LocalDate.of(2017, 9, 22);
LocalDate now = LocalDate.now(ZoneId.systemDefault());
long betweenDays = before.until(now, ChronoUnit.DAYS);
Date互转
Date转LocalDate
Date date = new Date();
LocalDate localDate = Instant
.ofEpochMilli(date.getTime()).atZone(ZoneId.systemDefault())
.toLocalDate();
Date所在包:java.util.Date
LocalDate转Date
LocalDate localDate = LocalDate.now();
Date date = Date.from(localDate
.atStartOfDay()
.atZone(ZoneId.systemDefault())
.toInstant());
所有方法
方法 | 说明 | 示例结果 |
LocalDate today = LocalDate.now(); | 取当前日期 | 2014-12-24 |
LocalDate crischristmas = LocalDate.of(2014, 12, 25); | 根据年月日取日期 | 2014-12-25 |
LocalDate endOfFeb = LocalDate.parse("2014-02-28"); | 根据字符串取。 严格按照ISO yyyy-MM-dd验证,02写成2都不行。当然也有一个重载方法允许自己定义格式 | |
LocalDate firstDayOfThisMonth = today.with(TemporalAdjusters.firstDayOfMonth()); | 取本月第1天 | 2017-03-01 |
LocalDate secondDayOfThisMonth = today.withDayOfMonth(2); | 取本月第2天 | 2017-03-02 |
LocalDate lastDayOfThisMonth = today.with(TemporalAdjusters.lastDayOfMonth()); | 取本月最后一天,再也不用计算是28,29,30还是31 | 2017-12-31 |
LocalDate firstDayOf2015 = lastDayOfThisMonth.plusDays(1); | 取下一天 | |
LocalDate firstMondayOf2015 = LocalDate.parse("2017-01-01").with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY)); | 取2017年1月第一个周一 |