
image.png
@[toc]
一、介紹
功能說明
這是一個靜態(tài)工具方法,用于獲取兩個日期之間的所有日期(不包含起始日期,包含結束日期?需要確認)。方法接收開始日期和結束日期兩個參數(shù),返回這兩個日期之間的所有日期的 List 集合。
參數(shù)說明
- start:開始日期(不包含在結果中)
- end:結束日期(可能包含在結果中?)
實現(xiàn)原理
- 創(chuàng)建兩個 Calendar 實例,分別設置為開始日期和結束日期
- 將開始日期的 Calendar 向前推進 1 天(tempStart.add(Calendar.DAY_OF_YEAR,1))
- 通過 while 循環(huán),只要開始日期在結束日期之前,就將當前日期加入結果集
- 每次循環(huán)后將開始日期增加 1 天,繼續(xù)比較
二、代碼
/**
* 獲取兩個日期之間的所有日期的開始時間集合
* 返回Date的List
*/
public static List<Date> getBetweenDates(Date start, Date end){
List<Date> result = new ArrayList<>();
Calendar tempStart = Calendar.getInstance();
tempStart.setTime(start);
tempStart.add(Calendar.DAY_OF_YEAR,1);
Calendar tempEnd = Calendar.getInstance();
tempEnd.setTime(end);
while (tempStart.before(tempEnd)){
result.add(tempStart.getTime());
tempStart.add(Calendar.DAY_OF_YEAR, 1);
}
return result;
}
結果展示
//獲取兩個日期之間的所有日期的開始時間集合
Date beginDate = new Date();
beginDate.setTime(1652976000000L); //2022-05-20 00:00:00
Date endDate = new Date();
endDate.setTime(1655654400000L); //2022-06-20 00:00:00
System.out.println(getBetweenDates(beginDate, endDate)); //[Sat May 21 00:00:00 CST 2022, Sun May 22 00:00:00 CST 2022, Mon May 23 00:00:00 CST 2022, Tue May 24 00:00:00 CST 2022, Wed May 25 00:00:00 CST 2022, Thu May 26 00:00:00 CST 2022, Fri May 27 00:00:00 CST 2022, Sat May 28 00:00:00 CST 2022, Sun May 29 00:00:00 CST 2022, Mon May 30 00:00:00 CST 2022, Tue May 31 00:00:00 CST 2022, Wed Jun 01 00:00:00 CST 2022, Thu Jun 02 00:00:00 CST 2022, Fri Jun 03 00:00:00 CST 2022, Sat Jun 04 00:00:00 CST 2022, Sun Jun 05 00:00:00 CST 2022, Mon Jun 06 00:00:00 CST 2022, Tue Jun 07 00:00:00 CST 2022, Wed Jun 08 00:00:00 CST 2022, Thu Jun 09 00:00:00 CST 2022, Fri Jun 10 00:00:00 CST 2022, Sat Jun 11 00:00:00 CST 2022, Sun Jun 12 00:00:00 CST 2022, Mon Jun 13 00:00:00 CST 2022, Tue Jun 14 00:00:00 CST 2022, Wed Jun 15 00:00:00 CST 2022, Thu Jun 16 00:00:00 CST 2022, Fri Jun 17 00:00:00 CST 2022, Sat Jun 18 00:00:00 CST 2022, Sun Jun 19 00:00:00 CST 2022]