美文网首页
LocalDate常用用法

LocalDate常用用法

作者: 阿杰_96c5 | 来源:发表于2022-02-09 17:30 被阅读0次

    LocalDate常用用法

    定义

    LocalDate formatDate = LocalDate.of(2020, 2, 5); // 自定义
    LocalDate today = LocalDate.now(); // 获取当前日期
    

    getX() 获取年月日等

    System.out.println(formatDate.getMonth()); // FEBRUARY 获取所在月份(英文)
    System.out.println(formatDate.getMonthValue()); // 2 获取所在月份(英文)
    System.out.println(formatDate.getDayOfMonth()); // 5 获取所在天
    

    plusX()、minusX() 加减日期

    LocalDate nextDay = formatDate.plusDays(1);
    System.out.println(nextDay); // 2020-02-06 明天
    LocalDate nextWeek = formatDate.plusWeeks(1);
    System.out.println(nextWeek); // 2020-02-12 下周当天
    LocalDate lastMonth = formatDate.minusMonths(1);
    System.out.println(lastMonth); // 2020-01-05 上月当天
    

    扩展用法

    常用于报表中计算同比环比等日期

    // 同环比日期计算
    LocalDate firstWeekDay = formatDate.with(TemporalAdjusters.previous(DayOfWeek.MONDAY));
    System.out.println(firstWeekDay); // 2020-02-03 本周第一天
    LocalDate firstMonthDay = formatDate.with(TemporalAdjusters.firstDayOfMonth());
    System.out.println(firstMonthDay); // 2020-02-01 本月第一天
    LocalDate firstYearDay = formatDate.with(TemporalAdjusters.firstDayOfYear());
    System.out.println(firstYearDay); // 2020-01-01 本年第一天
    System.out.println(date.with(TemporalAdjusters.lastDayOfMonth())); // 当月的最后一天
    // 1表示当月第一个  星期天  正数表示,第几个星期天,可能会超过当月
    System.out.println(date.with(TemporalAdjusters.dayOfWeekInMonth(1,DayOfWeek.SUNDAY)));
    // 注 -1表示当月最后一个  星期天  负数表示: 如-4 =-1 -3  比表示当前月最后一天,往前3星期
    System.out.println(date.with(TemporalAdjusters.dayOfWeekInMonth(-1,DayOfWeek.SUNDAY)));
    
    // 1表示当月第一个  星期天  正数表示,第几个星期天,可能会超过当月
    System.out.println(date.with(TemporalAdjusters.dayOfWeekInMonth(1,DayOfWeek.SUNDAY)));
    // 判断两个日期前后
    boolean param = formatDate.isBefore(today);
    System.out.println(param); // true 判断a是否早于b
    // 计算两个日期的间隔天数
    LocalDate start = LocalDate.parse("2019-12-01");
    LocalDate end = LocalDate.parse("2020-02-05");
    long days = start.until(end, ChronoUnit.DAYS);
    System.out.println("days: " + days); // days: 66
    

    LocalDateTime与String互转

    // LocalDateTime 转字符串
    // 第一种方法
    String date1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now());
    // 第二种方法
    String date2 = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
    
    System.out.println(date1);
    System.out.println(date2);
    
    
    // 字符串转 LocalDateTime
    // 第一种方法
    LocalDateTime dateTime2 = LocalDateTime.parse("2021-01-18 02:35:59", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
    
    // 第二种方法
    TemporalAccessor temporalAccessor = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").parse("2021-01-18 02:31:29");
    LocalDateTime dateTime1 = LocalDateTime.from(temporalAccessor);
    
    System.out.println(dateTime1);
    System.out.println(dateTime2);
    

    计算时间差值

    LocalDate startDate = LocalDate.of(2020, 2, 20);
    LocalDate endDate = LocalDate.of(2021, 1, 15);
    // 相差年
    long years = ChronoUnit.YEARS.between(startDate, endDate);
    // 相差月
    long months = ChronoUnit.MONTHS.between(startDate, endDate);
    // 相差周
    long weeks = ChronoUnit.WEEKS.between(startDate, endDate);
    // 相差天
    long days = ChronoUnit.DAYS.between(startDate, endDate);
    // 相差小时
    long hours = ChronoUnit.HOURS.between(startDate, endDate);
    // 相差分钟
    long minutes = ChronoUnit.MINUTES.between(startDate, endDate);
    // 相差秒
    long seconds = ChronoUnit.SECONDS.between(startDate, endDate);
    // 相差毫秒
    long milis = ChronoUnit.MILLIS.between(startDate, endDate);
    // 相差毫微秒
    long nano = ChronoUnit.NANOS.between(startDate, endDate);
    

    近一周的全部日期列表

    List<String> list = IntStream.rangeClosed(0, 6).boxed()
        .map(daysToSubtract -> LocalDate.now().minusDays(daysToSubtract).toString())
        .collect(Collectors.toList());
    list.forEach(System.out::println);
    

    相关文章

      网友评论

          本文标题:LocalDate常用用法

          本文链接:https://www.haomeiwen.com/subject/twzwkrtx.html