public class CurrentDateUtil {
private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// 参数两个日期 字符串形式
public static List<String> getDateList(String beginTime,String endTime){
List<String> dates=new ArrayList<String>();
try {
Date benginDate=sdf.parse(beginTime);
Date endDate=sdf.parse(endTime);
Calendar calendarBegin = Calendar.getInstance();
Calendar calendarEnd = Calendar.getInstance();
calendarBegin.setTime(benginDate);
calendarEnd.setTime(endDate);
int benginNumber=calendarBegin.get(Calendar.DAY_OF_MONTH);
int benginMonth=calendarBegin.get(Calendar.MONTH)+1;//开始日期 月
int endNumber=calendarEnd.get(Calendar.DAY_OF_MONTH);
int endMonth=calendarEnd.get(Calendar.MONTH)+1; //结束日期 月
if(benginMonth == endMonth){ //日期是同一个月
for(int i=benginNumber;i<=endNumber;i++){
calendarBegin.set(Calendar.DAY_OF_MONTH, i);
String dateTime=sdf.format(calendarBegin.getTime());
dates.add(dateTime);
}
}else{//日期不是同一个月
getMonthDates(calendarBegin,calendarEnd,dates);
}
} catch (ParseException e) {
e.printStackTrace();
}
return dates;
}
//日期不是 同一个月
public static List<String> getMonthDates(Calendar beginDate,Calendar endDate,List<String> listDates){
int bMonth=beginDate.get(Calendar.MONTH)+1;//开始日期 月
int eMonth=endDate.get(Calendar.MONTH)+1; //结束日期 月
int monthPoor=eMonth-bMonth; //月数的差
//7月份 8 月份 情况
int currentDaysBegin=beginDate.getActualMaximum(Calendar.DATE);//当前月份的天数
int currentDayNumBegin=beginDate.get(Calendar.DAY_OF_MONTH);//当前月份 处于第几天
for(int i=currentDayNumBegin;i<=currentDaysBegin;i++){
beginDate.set(Calendar.DAY_OF_MONTH, i);
String currentDaysNumberBegin=sdf.format(beginDate.getTime());
listDates.add(currentDaysNumberBegin);
}
Date currentDateEnd=endDate.getTime(); //当前日期
endDate.set(Calendar.DAY_OF_MONTH, 1);
Date currentDateBeginEnd=endDate.getTime();//当前月初 日期
int dateNumber=1;
while(currentDateBeginEnd.before(currentDateEnd)){
endDate.set(Calendar.DAY_OF_MONTH, dateNumber);
String currentDaysNumberEed=sdf.format(endDate.getTime());
listDates.add(currentDaysNumberEed);
currentDateBeginEnd=endDate.getTime();
dateNumber++;
}
//中间 隔月 情况 6月 8月 情况
if(monthPoor >1){
int EndMonth=endDate.get(Calendar.MONTH)+1; ///结束日期的月份
int nextMonth=beginDate.get(Calendar.MONTH)+2;//开始日期的第二个月份
while(nextMonth < EndMonth){
beginDate.add(Calendar.MONTH, 1);
int currentDaysNumbers=beginDate.getActualMaximum(Calendar.DAY_OF_MONTH);//当前月的最大天数
beginDate.set(Calendar.DAY_OF_MONTH, 1);
Date currentYueChu=beginDate.getTime(); //月初日期
beginDate.set(Calendar.DAY_OF_MONTH, currentDaysNumbers);
Date currentYueMo=beginDate.getTime(); //月末
int tianShu=1;
while(currentYueChu.before(currentYueMo)){
beginDate.set(Calendar.DAY_OF_MONTH, tianShu);
String datesNum=sdf.format(beginDate.getTime());
listDates.add(datesNum);
currentYueChu=beginDate.getTime();
tianShu++;
}
nextMonth=beginDate.get(Calendar.MONTH)+1;
nextMonth++;
}
}
return listDates;
}
}
返回两个日期之间的日期集合
最新推荐文章于 2022-11-02 12:27:06 发布