业务场景:
前端只传输一个参数,即年月。但是要实现传入月份的准确查询,比如数据库查询中使用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();
}
后记:
可以通过此获得任意月份的首日和最后一日,不局限于前端传参的月份,可以通过对月份差进行增减实现