根据时间区间判断指定时间是否存在该时间区间内

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:592022-12-12 12:12:12】 在上个月开始时间:【2022-12-01 01:00:00】与上个月结束时间:【2022-12-31 23:59:59】之间是否:true
posted @ 2023-01-17 15:22  奋--斗  阅读(122)  评论(0编辑  收藏  举报