LocalDate日期相差天数; 当前日期加一天或减一天

LocalDate.toEpochDay相减计算两个日期相差天数。

    public static void main(String[] args) {
        LocalDate date1 = LocalDate.parse("2022-10-01");
        LocalDate date2 = LocalDate.parse("2022-10-07");
        Long holiday = date2.toEpochDay() - date1.toEpochDay();
        System.out.println( date2 + "与" + date1 + "相减等于" + holiday);// 2022-10-07与2022-10-01相减等于6
        System.out.println("喜迎国庆" + (date2.toEpochDay() - date1.toEpochDay() + 1) + "天乐!");// 喜迎国庆7天乐!
    }

 Period.between计算日期相差几年 零几个月 零几天

public static void main(String[] args) {
        // 当前日期   2022-08-22
        LocalDate now = LocalDate.now();
        // 入职日期   2022-08-18
        LocalDate entryDate = LocalDate.parse("2022-08-18");
        // 到期日期
        LocalDate dueDate = LocalDate.parse("2025-08-17");

        // 司龄:(当前时间-入职日期)/365,保留小数点后1位,单位年;
        long onJobDays = now.toEpochDay() - entryDate.toEpochDay();
        System.out.println("在职天数:" + onJobDays);    // 在职天数:4
        BigDecimal companyAge = Convert.toBigDecimal(onJobDays).divide(BigDecimalUtil.toBigDecimal("365"), 1, BigDecimal.ROUND_HALF_UP);
        System.out.println("司龄:" + companyAge); //  司龄:0.0

        Period between = Period.between(entryDate, dueDate);
        System.out.println("Period:" + between);    // Period:P2Y11M30D
        System.out.println("间隔年数:"+ between.getYears()); // 间隔年数:2
        System.out.println("间隔月份:" + between.getMonths());// 间隔月份:11
        System.out.println("余下天数:" + between.getDays()); // 余下天数:30
        // 合同年限:(到期日期所在月-入职日期所在月)/12,保留小数点后1位,单位年;
        BigDecimal contractYear = Convert.toBigDecimal(between.getYears() * 12 + between.getMonths()).divide(new BigDecimal(12), 1, BigDecimal.ROUND_HALF_UP);
        System.out.println("合同年限:" + contractYear);// 合同年限:2.9

        

        // 如果2022-08-18距离2022-08-22要求返回5,那么直接+1即可。
        // 2022-08-18 到 2025-08-17合同年限应为3年的,可以将到期日期+1天。

        // 到期日期增加一天
        System.out.println(dueDate + "增加一天:" + dueDate.plusDays(1));
        // 到期日期后退一天
        System.out.println(dueDate + "减一天:" + dueDate.plusDays(-1));
        // 到期日期增加一个月
        System.out.println(dueDate + "增加一个月:" + dueDate.plusMonths(1));
        // 到期日期增加一周
        System.out.println(dueDate + "增加一周:" + dueDate.plusWeeks(1));
        // 到期日期增加一个月,并指定15日
        System.out.println(dueDate + "增加一个月,日期为15日:" + dueDate.plusMonths(1).withDayOfMonth(15));
        
        // 输出结果
        // 2025-08-17增加一天:2025-08-18
        // 2025-08-17减一天:2025-08-16
        // 2025-08-17增加一个月:2025-09-17
        // 2025-08-17增加一周:2025-08-24
        // 2025-08-17增加一个月,日期为15日:2025-09-15
    }
plusYears(i) 增加几年,正负数都可。正数,增加几年。负数,后退几年  minusYears(i)则相反。

plusWeeks(i) 增加几周,正负数都可。正数,增加几周。负数,后退几周   minusWeeks(i)则相反。

plusMonths(i) 增加几个月,正负数都可。正数,增加几个月。负数,后退几个月   minusMonths(i)则相反。

plusDays(i) 增加几天,正负数都可。正数,增加几天。负数,后退几天    minusDays(i)则相反。

withDayOfMonth(i) 设置默认日期
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值