有時候我們會遇到這樣的需求:比如在2015-12-12 至 2016-01-22號之間有哪些日期呢?其實很簡單 ,我們做報表的時候有可能會用到,根據用戶選擇的時間段,顯示該時間段的具體數據。
下面直接看代碼 , 下面代碼可以直接複製粘貼使用。
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
/**
*
* @author ZSL
* @DESC 計算兩個日期之間有哪些日期
*/
public class DateUtil {
public static List getDays(String beginTime,String endTime){
DateFormat FORMATTER = new SimpleDateFormat("yyyy-MM-dd");
List<Date> list=null;
try{
Calendar startDay = Calendar.getInstance();
Calendar endDay = Calendar.getInstance();
startDay.setTime(FORMATTER.parse(beginTime));
endDay.setTime(FORMATTER.parse(endTime));
// 給出的日期開始日比終了日大則不執行打印
list=new ArrayList<Date>();
Date s1=new Date();
s1.setDay(beginTime);
list.add(s1);
if(!beginTime.equals(endTime)){
if(startDay.compareTo(endDay)<=0){
//現在打印中的日期
Calendar currentPrintDay = startDay;
while (true){
Date s=new Date();
// 日期加一
currentPrintDay.add(Calendar.DATE, 1);
// 日期加一後判斷是否達到終了日,達到則終止打印
if (currentPrintDay.compareTo(endDay) == 0) {
break;
}
s.setDay(FORMATTER.format(currentPrintDay.getTime()));
list.add(s);
}
Date s2=new Date();
s2.setDay(endTime);
list.add(s2);
}
}
}catch (Exception e){
e.printStackTrace();
}
return list;
}
public static void main(String[] args) {
List<Date> list = getDays("2015-12-12", "2016-01-22");
for (Date date : list) {
System.out.println(date.getDay());
}
}
}
class Date{
private String day;
public String getDay() {
return day;
}
public void setDay(String day) {
this.day = day;
}
}