import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; public class Test { public static List<String> findDates(String stime, String etime) throws ParseException { List<String> allDate = new ArrayList(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date dBegin = sdf.parse(stime); Date dEnd = sdf.parse(etime); allDate.add(sdf.format(dBegin)); Calendar calBegin = Calendar.getInstance(); // 使用給定的 Date 設置此 Calendar 的時間 calBegin.setTime(dBegin); Calendar calEnd = Calendar.getInstance(); // 使用給定的 Date 設置此 Calendar 的時間 calEnd.setTime(dEnd); // 測試此日期是否在指定日期之后 while (dEnd.after(calBegin.getTime())) { // 根據日歷的規則,為給定的日歷字段添加或減去指定的時間量 calBegin.add(Calendar.DAY_OF_MONTH, 1); allDate.add(sdf.format(calBegin.getTime())); } return allDate; } public static void main(String[] args) { //測試數據 String stime = "2019-05-01"; String etime = "2019-05-05"; //集合中包含2019-05-01/2019-05-05,不需要可去除 List<String> list = new ArrayList<>(); try { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); long s = Long.valueOf(sdf.parse(stime).getTime()); long e = Long.valueOf(sdf.parse(etime).getTime()); //只有結束時間大於開始時間時才進行查詢 if(s<e) { list = findDates(stime, etime); } } catch (ParseException e) { e.printStackTrace(); } for(String time : list) { System.out.println(time); } System.out.println("間隔天數:" + list.size()); } }
原文:https://blog.csdn.net/qq_38955717/article/details/90448848