1、转换操作
// LocalDateTime 转字符串 String format = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS[SSS]"));// 字符串转 LocalDateTime LocalDateTime parse = LocalDateTime.parse("2021-01-02 10:00:00", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));// Date 转 LocalDateTime LocalDateTime localDateTime = new Date().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();// LocalDateTime 转 Date Date from = Date.from(LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant());// 获取默认时区 ZoneOffset currentZone = OffsetDateTime.now().getOffset(); ZoneId newZone = ZoneId.of("Australia/Darwin");// 转化成其他时区的时间 LocalDateTime localDateTime = LocalDateTime.now().atZone(currentZone).withZoneSameInstant(newZone).toLocalDateTime(); // LocalDateTime 转时间戳 long timestamp = LocalDateTime.now().toInstant(ZoneOffset.ofHours(8)).toEpochMilli(); // 时间戳转 LocalDateTime LocalDateTime localDateTime = Instant.ofEpochMilli(System.currentTimeMillis()).atZone(ZoneOffset.ofHours(8)).toLocalDateTime();
2、获取操作
// 获取当前是几号 System.out.println(LocalDateTime.now().getDayOfMonth());// 获取星期几 返回是一个枚举类型 System.out.println(LocalDateTime.now().getDayOfWeek());// 获取今天的小时部分 System.out.println(LocalDateTime.now().getHour()); // 获取当天最大时间 LocalDateTime localDateTime = LocalDateTime.of(LocalDate.now(), LocalTime.MAX);// 获取当天最小时间 LocalDateTime localDateTimeMin = LocalDateTime.of(LocalDate.now(), LocalTime.MIN); // 获取当月第一天 LocalDateTime localDateTime = LocalDateTime.now().with(TemporalAdjusters.firstDayOfMonth()).withHour(0).withMinute(0).withSecond(0);// 获取当月最后一天 LocalDateTime localDateTime1 = LocalDateTime.now().with(TemporalAdjusters.lastDayOfMonth()).withHour(23).withMinute(59).withSecond(59);
3、差值操作
Duration between = Duration.between(LocalDateTime.now(), LocalDateTime.now().plusDays(4));// 计算两个时间之间的毫秒数 System.out.println(between.toMillis());// 将当前时间相加 4 天 System.out.println(LocalDateTime.now().plusDays(4));// 将当前时间相减 4 天 System.out.println(LocalDateTime.now().minusDays(4));// 将当前时间与 4 天后的时间比较,判断当前时间是否在 4 天后,显而易见是返回 false 的 System.out.println(LocalDateTime.now().isAfter(LocalDateTime.now().plusDays(4)));// 如果年月日都相同,比较结果返回的是 -1 0 1// 如果年相同(日不同 | 日相同)则返回的是月份之间的差值// 如果月份相同则返回的是日之间的差值// 如果年不同则返回的是年之前的差值 System.out.println(LocalDateTime.now().compareTo(LocalDateTime.now().plusMonths(25)));