根据时间区间判断指定时间是否存在该时间区间内
1.获取上个月开始时间
/** * 获得上个月的开始时间 * @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(); }
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(); }
3.判断时间指定时间是否在开始时间、结束时间之间
/** * 判断时间: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; } }
4.方法验证
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()))); }
5.控制台结果输出
系统当前时间: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
古今成大事者,不唯有超世之才,必有坚韧不拔之志!