所有分类
  • 所有分类
  • 未分类

Java时间(JDK8)–LocalDate的使用

简介

本文用示例介绍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还是312017-12-31
LocalDate firstDayOf2015 = lastDayOfThisMonth.plusDays(1);取下一天
LocalDate firstMondayOf2015 = LocalDate.parse(“2017-01-01”).with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY));取2017年1月第一个周一

0

评论0

请先

显示验证码
没有账号?注册  忘记密码?

社交账号快速登录