【java】获取某一时间段内的所有日期

1.获取起止日期和终止日期之间的所有日期 — 返回 Date 集合

    /**
     * 获取某段时间内的所有日期
     * @param startDate yyyy-MM-dd
     * @param endDate yyyy-MM-dd
     * @return yyyy-MM-dd
     */
    public static List<Date> findDates(Date startDate, Date endDate) {
    
    
        Calendar cStart = Calendar.getInstance();
        cStart.setTime(getStartTime(startDate));

        List dateList = new ArrayList();
        //加上起始日期
        dateList.add(startDate);
        // 此日期是否在指定日期之后
        while (endDate.after(cStart.getTime())) {
    
    
            // 根据日历的规则,为给定的日历字段添加或减去指定的时间量
            cStart.add(Calendar.DAY_OF_MONTH, 1);
            // 如果终止日期小于当前日期
            if(endDate.compareTo(cStart.getTime()) < 0)
                break;
            dateList.add(cStart.getTime());
        }
        return dateList;
    }

2. 返回 日期的 String 集合, 有序排列

	/**
     * 根据一段时间获取该段时间的所有日期  倒序排序
     * @param startDate
     * @param endDate
     * @return yyyy-MM-dd
     */
    public static List<String> getTwoDaysDay(String startDate, String endDate) {
    
    
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        List<String> dateList = new ArrayList<String>();
        try {
    
    
            Date dateOne = sdf.parse(startDate);
            Date dateTwo = sdf.parse(endDate);

            Calendar calendar = Calendar.getInstance();
            calendar.setTime(dateTwo);

            dateList.add(endDate);
            while (calendar.getTime().after(dateOne)) {
    
     //倒序时间,顺序after改before其他相应的改动。
                calendar.add(Calendar.DAY_OF_MONTH, -1);
                dateList.add(sdf.format(calendar.getTime()));
            }
        } catch (Exception e) {
    
    
            e.printStackTrace();
        }
        return dateList;
    }

    /**
     * 根据一段时间获取该段时间的所有日期  正序排序
     * @param startDate
     * @param endDate
     * @return
     */
    public static List<String> getTwoDaysDayDes(String startDate, String endDate) {
    
    
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        List<String> dateList = new ArrayList<String>();
        try {
    
    
            Date dateOne = sdf.parse(startDate);
            Date dateTwo = sdf.parse(endDate);
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(dateOne);
            dateList.add(startDate);
            while (dateTwo.after(calendar.getTime())) {
    
    
                calendar.add(Calendar.DAY_OF_MONTH, 1);
                dateList.add(sdf.format(calendar.getTime()));
            }
        } catch (Exception e) {
    
    
            e.printStackTrace();
        }
        return dateList;
    }

3.根据一段时间获取该段时间的所有月份

/**
     * 根据一段时间获取该段时间的所有月份
     * @param minDate yyyy-MM
     * @param maxDate yyyy-MM
     * @return
     */
    public static List<String> getMonthBetween(String minDate, String maxDate){
    
    
        ArrayList<String> result = new ArrayList<String>();
        try {
    
    
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");//格式化为年月

            Calendar min = Calendar.getInstance();
            Calendar max = Calendar.getInstance();
            min.setTime(sdf.parse(minDate));
            min.set(min.get(Calendar.YEAR), min.get(Calendar.MONTH), 1);

            max.setTime(sdf.parse(maxDate));
            max.set(max.get(Calendar.YEAR), max.get(Calendar.MONTH), 2);

            Calendar curr = min;
            while (curr.before(max)) {
    
    
                result.add(sdf.format(curr.getTime()));
                curr.add(Calendar.MONTH, 1);
            }
        } catch (ParseException e) {
    
    
            e.printStackTrace();
        }
        return result;
    }

猜你喜欢

转载自blog.csdn.net/qq_43622777/article/details/129933070
今日推荐