【Java工具类】获取特定月的首日、尾日(最后一日)

业务场景:

前端只传输一个参数,即年月。但是要实现传入月份的准确查询,比如数据库查询中使用between ... and ... 语句。也可能需要查询传入月份的前一个或几个,后一个或几个月份的数据查询。下面的工具类代码即可实现。

代码:

前端传参:YYYY - MM (例:2024-07)

实现逻辑:将前端传参分解获得跟当前月份比较得到的月份差,将月份差当做传参获得首日和最后一日,可以将三个方法放在一个日期工具类中

1、获得跟当前月份比较的月份差:

import java.time.LocalDate;
public static int getMonthGapBetweenNowAnd(List<Integer> date) {
        LocalDate insertDate = LocalDate.of(date.get(0),date.get(1),1);
        LocalDate now = LocalDate.now();
        int monthGap = (now.getYear() - insertDate.getYear()) * 12 + (now.getMonthValue() - insertDate.getMonthValue());
        return monthGap;
}

2、获得月份差的首日:

public static String getfirstDayOfSpecialMonthFromNow(int monthNum) {
        return LocalDate.now().minusMonths(monthNum).with(TemporalAdjusters.firstDayOfMonth()).toString();
    }

3、获得月份差的尾日:

public static String getLastDayOfSpecialMonthFromNow(int monthNum) {
        return LocalDate.now().minusMonths(monthNum).with(TemporalAdjusters.lastDayOfMonth()).toString();
    }

后记:

可以通过此获得任意月份的首日和最后一日,不局限于前端传参的月份,可以通过对月份差进行增减实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值