/**
* 获得上个月的开始时间
* @param date
* @return
*/
public static Date getLastMonthStartTime(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.getActualMinimum(Calendar.DAY_OF_MONTH));
calendar.set(Calendar.HOUR_OF_DAY, 1);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
return calendar.getTime();
}
/**
* 获得上个月的结束时间
* @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();
}
/**
* 判断时间:nowTime是否在开始时间、结束时间之间
* @param dateTime
* @return boolean
*/
public static boolean timeCalendar(Date dateTime,Date beginTime,Date endTime) {
//设置当前时间
Calendar date = Calendar.getInstance();
date.setTime(dateTime);
//设置开始时间
Calendar begin = Calendar.getInstance();
//开始时间
begin.setTime(beginTime);
//设置结束时间
Calendar end = Calendar.getInstance();
//上午结束时间
end.setTime(endTime);
//处于开始时间之后,和结束时间之前的判断
if((date.after(begin) && date.before(end))) {
return true;
} else {
return false;
}
}
public static void main(String[] args) {
System.out.println("系统当前时间:"+DateUtil.format(new Date(),DATE_FORMAT_STR));
System.out.println("系统当前时间上个月第一天的时间:"+DateUtil.format(getLastMonthStartTime(new Date()),DATE_FORMAT_STR));
System.out.println("系统当前时间上个月最后一天的时间:"+DateUtil.format(getLastMonthEndTime(new Date()),DATE_FORMAT_STR));
System.out.println("【2022-12-12 12:12:12】 在上个月开始时间:【"+DateUtil.format(getLastMonthStartTime(new Date()),DATE_FORMAT_STR)+"】与上个月结束时间:【"+DateUtil.format(getLastMonthEndTime(new Date()),DATE_FORMAT_STR)+"】的之间是否:"+timeCalendar(DateUtil.parse("2022-12-12 12:12:12"), getLastMonthStartTime(new Date()), getLastMonthEndTime(new Date())));
}
系统当前时间:2023-01-17 15:15:45
系统当前时间上个月第一天的时间:2022-12-01 01:00:00
系统当前时间上个月最后一天的时间:2022-12-31 23:59:59
【2022-12-12 12:12:12】 在上个月开始时间:【2022-12-01 01:00:00】与上个月结束时间:【2022-12-31 23:59:59】之间是否:true