主要使用 LocalDateTime 和 LocalDate
LocalDate : 只是到日期
LocalDateTime :包含dateTime 但是格式化中没有通用的 如 2020-01-07 18:00:01 格式的
格式转换的 DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
格式是 : 2020-01-07
// 1. 当前时间的 LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); // 2. 固定时间的 String parseDateStr = "2020-01-07"; String fixDateFormat = LocalDate.parse(parseDateStr).format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); 思路 先转换为 LocalDate 再转换为 string 同样使用于 yyyy-MM-dd HH:mm:ss LocalDate 可以 parse 任意类型 String str = "2017-11-21 14:41:06:612"; DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSS"); String fixDateTimeStr = LocalDate.parse(str,fmt).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
格式是 : 2020-01-07 18:00:01
// 获取当前时间的年月日 时分秒 String formatDateTimeStr = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); // 获取固定时间的 年月日 时分秒 String formatDateStr = "2019-10-12"; String startOfDay = LocalDate.parse(formatDateStr).atTime(LocalTime.MIN) .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); String endOfDay = LocalDate.parse(formatDateStr).atTime(LocalTime.MAX) .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); 通过 atTime 转换为 LocalDateTime str + " 00:00:00"
LocalDate nowLocalDate = LocalDate.now(); Date date = Date.from(localDate.atStartOfDay(ZoneOffset.ofHours(8)).toInstant()); LocalDate nowLocalDate = LocalDate.now(); Date date = Date.from(nowLocalDate.atStartOfDay(ZoneOffset.ofHours(8)).toInstant());
LocalDateTime.now().plusDays(2).withHour(23); 或者比较差值 LocalDateTime localDateTime01 = LocalDateTime.of(2019, 6, 18, 12, 0); LocalDateTime localDateTime02 = LocalDateTime.of(2019, 6, 1, 12, 0); System.out.println(localDateTime01.isAfter(localDateTime02)); // 类似的,还有 isBefore 等方法 LocalDateTime localDateTime03 = LocalDateTime.of(2019, 6, 18, 12, 0); LocalDateTime localDateTime04 = LocalDateTime.of(2019, 6, 18, 13, 0); Duration duration = Duration.between(localDateTime03, localDateTime04);