获取开始及结束日期间隔月份或年份列表

来源:互联网 发布:optical flow算法介绍 编辑:程序博客网 时间:2024/06/06 05:14
/** * 获取开始及结束日期间隔月份列表 * start格式 "2015-01-01" * end格式 "2016-01-01" * @param start * @param end * @return */public static List<String> getMonths(String start, String end) {List<String> dateList = new ArrayList<String>();    if (StringUtils.isNotBlank(start) && StringUtils.isNotBlank(end)) {    Date dBegin = ToolDateTime.parse(start, ToolDateTime.pattern_ymd);    Date dEnd = ToolDateTime.parse(end, ToolDateTime.pattern_ymd);        Calendar calBegin = Calendar.getInstance();    // 使用给定的 Date 设置此 Calendar 的时间      calBegin.setTime(dBegin);    int yearMonth1 = (calBegin.get(Calendar.YEAR)) * 100 + calBegin.get(Calendar.MONTH);    Calendar calEnd = Calendar.getInstance();    // 使用给定的 Date 设置此 Calendar 的时间      calEnd.setTime(dEnd);    int yearMonth2 = (calEnd.get(Calendar.YEAR)) * 100 + calEnd.get(Calendar.MONTH);    // 测试此日期是否在指定日期之后      while (yearMonth2 >= yearMonth1) {    dateList.add(ToolDateTime.format(calBegin.getTime(), ToolDateTime.pattern_ym));    calBegin.add(Calendar.MONTH, 1);     yearMonth1 = (calBegin.get(Calendar.YEAR)) * 100 + calBegin.get(Calendar.MONTH);    }    }    return dateList;    }/** * 获取开始及结束日期间隔年份列表 * start格式 "2015-01-01" * end格式 "2016-01-01" * @param start * @param end * @return */public static List<String> getYears(String start, String end) {List<String> dateList = new ArrayList<String>();if (StringUtils.isNotBlank(start) && StringUtils.isNotBlank(end)) {Date dBegin = ToolDateTime.parse(start, ToolDateTime.pattern_ymd);Date dEnd = ToolDateTime.parse(end, ToolDateTime.pattern_ymd);Calendar calBegin = Calendar.getInstance();// 使用给定的 Date 设置此 Calendar 的时间  calBegin.setTime(dBegin);int year1 = calBegin.get(Calendar.YEAR);Calendar calEnd = Calendar.getInstance();// 使用给定的 Date 设置此 Calendar 的时间  calEnd.setTime(dEnd);int year2 = calEnd.get(Calendar.YEAR);// 测试此日期是否在指定日期之后  while (year2 >= year1) {dateList.add(ToolDateTime.format(calBegin.getTime(), "yyyy"));calBegin.add(Calendar.YEAR, 1); year1 = calBegin.get(Calendar.YEAR);}}return dateList;}


注:

工具类ToolDateTime.class没粘,把下面的改成自己的方法即可

public static final String pattern_ym = "yyyy-MM"; // pattern_ym
public static final String pattern_ymd = "yyyy-MM-dd"; // pattern_ymd


public static String format(Date date, String pattern) {
        DateFormat format = new SimpleDateFormat(pattern);
        return format.format(date);
    }

public static Date parse(String date, String pattern) {
        SimpleDateFormat format = new SimpleDateFormat(pattern);
        try {
            return format.parse(date);
        } catch (ParseException e) {
            log.error("ToolDateTime.parse异常:date值" + date + ",pattern值" + pattern);
            return null;
        }
    }

0 0
原创粉丝点击