比如我们在做一个需求的时候需要后端返回一个选中时间内的时间月份列表:
如:我想查询2022-01-01到2022-12-30这个时间里面的所有月份(带年份)。
public static void main(String[] args) {
String startTime = "2022-01-01";
String endTime = "2022-12-30";
List<String> monthBetween = getMonthBetween(startTime, endTime);
for (String s : monthBetween) {
System.out.println("时间:"+s);
}
}
/**
* 获取两个时间节点之间的月份列表
*/
private 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;
}