简迅云笔记

LocalDateTime 时间 Api 操作大全

1、转换操作

  1. // LocalDateTime 转字符串
  2. String format = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS[SSS]"));
  3. // 字符串转 LocalDateTime
  4. LocalDateTime parse = LocalDateTime.parse("2021-01-02 10:00:00", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
  5. // Date 转 LocalDateTime
  6. LocalDateTime localDateTime = new Date().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
  7. // LocalDateTime 转 Date
  8. Date from = Date.from(LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant());
  9. // 获取默认时区
  10. ZoneOffset currentZone = OffsetDateTime.now().getOffset();
  11. ZoneId newZone = ZoneId.of("Australia/Darwin");
  12. // 转化成其他时区的时间
  13. LocalDateTime localDateTime = LocalDateTime.now().atZone(currentZone).withZoneSameInstant(newZone).toLocalDateTime();
  14. // LocalDateTime 转时间戳
  15. long timestamp = LocalDateTime.now().toInstant(ZoneOffset.ofHours(8)).toEpochMilli();
  16. // 时间戳转 LocalDateTime
  17. LocalDateTime localDateTime = Instant.ofEpochMilli(System.currentTimeMillis()).atZone(ZoneOffset.ofHours(8)).toLocalDateTime();

2、获取操作

  1. // 获取当前是几号
  2. System.out.println(LocalDateTime.now().getDayOfMonth());
  3. // 获取星期几 返回是一个枚举类型
  4. System.out.println(LocalDateTime.now().getDayOfWeek());
  5. // 获取今天的小时部分
  6. System.out.println(LocalDateTime.now().getHour());
  7. // 获取当天最大时间
  8. LocalDateTime localDateTime = LocalDateTime.of(LocalDate.now(), LocalTime.MAX);
  9. // 获取当天最小时间
  10. LocalDateTime localDateTimeMin = LocalDateTime.of(LocalDate.now(), LocalTime.MIN);
  11. // 获取当月第一天
  12. LocalDateTime localDateTime = LocalDateTime.now().with(TemporalAdjusters.firstDayOfMonth()).withHour(0).withMinute(0).withSecond(0);
  13. // 获取当月最后一天
  14. LocalDateTime localDateTime1 = LocalDateTime.now().with(TemporalAdjusters.lastDayOfMonth()).withHour(23).withMinute(59).withSecond(59);

3、差值操作

  1. Duration between = Duration.between(LocalDateTime.now(), LocalDateTime.now().plusDays(4));
  2. // 计算两个时间之间的毫秒数
  3. System.out.println(between.toMillis());
  4. // 将当前时间相加 4 天
  5. System.out.println(LocalDateTime.now().plusDays(4));
  6. // 将当前时间相减 4 天
  7. System.out.println(LocalDateTime.now().minusDays(4));
  8. // 将当前时间与 4 天后的时间比较,判断当前时间是否在 4 天后,显而易见是返回 false 的
  9. System.out.println(LocalDateTime.now().isAfter(LocalDateTime.now().plusDays(4)));
  10. // 如果年月日都相同,比较结果返回的是 -1 0 1
  11. // 如果年相同(日不同 | 日相同)则返回的是月份之间的差值
  12. // 如果月份相同则返回的是日之间的差值
  13. // 如果年不同则返回的是年之前的差值
  14. System.out.println(LocalDateTime.now().compareTo(LocalDateTime.now().plusMonths(25)));