Calendar获取当前参数月份下的第一和最后一天

背景:

前端查询时,使用的是月份选择器(如 antdesign的 a-month-picker),传递到后端的格式为“2021-3”,最后需要将这个年月转换成开始时间和结束时间,

其中开始时间为3月的第一天,结束时间为3月的最后一天

如:2021-03-01 00:00:00~2021-03-31 59:59:59

后端代码:

    public static String monthToDays(String yearMonth) {
        int year = 0;
        int month = 0;
        StringBuilder dateString =new StringBuilder("");
        year =  Integer.parseInt(yearMonth.split("-")[0]);
        month  = Integer.parseInt(yearMonth.split("-")[1]);
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        Calendar calendar = Calendar.getInstance();
        // 设置参数中的年份、月份
        calendar.set(Calendar.YEAR , year);
        calendar.set(Calendar.MONTH , month - 1);
        // 获取设置的年月的第一天
        calendar.set(Calendar.DAY_OF_MONTH, 1);
        String firstDay = format.format(calendar.getTime())+ " 00:00:00";
        // 获取设置的年月的最大一天
        int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
        // 设置最后一天
        calendar.set(Calendar.DAY_OF_MONTH , maxDay);
        String lastDay = format.format(calendar.getTime()) + " 23:59:59";
        dateString.append(firstDay).append("~").append(lastDay);
        return dateString.toString();
    }


qrcode