简介
本文用示例介绍LocalDate的用法。LocalDate是JDK8新增的。
LocalDate与LocalDateTime的用法很接近。LocalDateTime详见:Java时间(JDK8)-LocalDateTime的使用 – 自学精灵
常用操作
日期差值
获取两个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月第一个周一 |
请先
!