获取指定时间的上个月开始时间和结束时间


public static void main(String[] args) {

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  // 设置日期格式
        Date date1 = null;
        try {
            date1 = sdf.parse("2021-03-07 02:08:38");
        } catch (ParseException e) {
            e.printStackTrace();
        }
        String strTime = sdf.format(date1);  // 格式转换
        System.out.println(strTime);
        System.out.println(sdf.format(DateUtil.getStartTimeOfLastMonth(date1)));//指定时间的上个月开始时间
        System.out.println(sdf.format(DateUtil.getLastMonthEndTime(date1)));//指定时间的上个月最后一天
}



1,指定时间的上个月开始时间

/**
     * 获得上个月的开始时间
     * @param date
     * @return
     */
    public static Date getStartTimeOfLastMonth(Date date){
        Date thisMonthStartTime = getStartTimeOfMonth(date);
        Calendar cal = Calendar.getInstance();
        cal.setTime(thisMonthStartTime);
        cal.add(Calendar.MONTH, -1);
        return cal.getTime();
    }

 2,指定时间的上个月最后一天

/**
     * 获得上个月的结束时间
     * @return
     */
    public static Date getLastMonthEndTime(Date date) {
        String timeZone = "GMT+8:00";
        Calendar calendar = Calendar.getInstance();// 获取当前日期
        calendar.setTimeZone(TimeZone.getTimeZone(timeZone));
        calendar.setTimeInMillis(date.getTime());
        calendar.add(Calendar.YEAR, 0);
        calendar.add(Calendar.MONTH, -1);
        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));// 获取当前月最后一天
        calendar.set(Calendar.HOUR_OF_DAY, 23);
        calendar.set(Calendar.MINUTE, 59);
        calendar.set(Calendar.SECOND, 59);
        calendar.set(Calendar.MILLISECOND, 999);
        return calendar.getTime();
    }
正确付出才有收获
原文地址:https://www.cnblogs.com/gongwangwang/p/15110899.html