工具类
public static List<String> getMonthBetweenDate(Date startDate, Date endDate) {ArrayList<String> result = new ArrayList<String>();SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM");//格式化,调整为自己需要的格式Calendar min = Calendar.getInstance();Calendar max = Calendar.getInstance();//给calendar设置开始时间min.setTime(startDate);//set方法设置年月日 年为开始时间的年份 后面同理min.set(min.get(Calendar.YEAR), min.get(Calendar.MONTH), 1);//给calendar设置结束时间max.setTime(endDate);//set方法设置年月日 年为结束时间的年份 后面同理,最后面的1和2不要改max.set(max.get(Calendar.YEAR), max.get(Calendar.MONTH), 2);//创建一个临时的变量,代表当前的时间Calendar curr = min;//如果当前的时间在结束时间之前,循环知道超过结束时间就结束,返回结果集合while (curr.before(max)) {//将这个当前的时间格式化之后保存到result集合result.add(sdf.format(curr.getTime()));//将当前的时间加上1个月curr.add(Calendar.MONTH, 1);}return result;}
测试方法 .format 是 date转string
.parse 是 string转date
public static void main(String[] args) {SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");String s = "2024-01-01 00:00:00";Date startDate = null;Date endDate = new Date();//当前时间2024.05.09try {startDate = format1.parse(s);} catch (ParseException e) {throw new RuntimeException(e);}System.out.println("====== " + getMonthBetweenDate(startDate , endDate));}
结果