返回两个日期之间的日期集合

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;
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
可以使用Java 8的时间API LocalDateTime和Stream API来实现该方法。具体代码实现如下: ```java import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; public class DateUtils { public static List<String> getDates(String startDateStr, String endDateStr) { DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); LocalDate startDate = LocalDate.parse(startDateStr, formatter); LocalDate endDate = LocalDate.parse(endDateStr, formatter); List<String> dates = new ArrayList<>(); while (!startDate.isAfter(endDate)) { dates.add(startDate.format(formatter)); startDate = startDate.plusDays(1); } return dates; } public static List<String> getDatesOneDayBeforeAndSevenDaysAfter(String dateStr) { DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); LocalDate date = LocalDate.parse(dateStr, formatter); LocalDate startDate = date.minusDays(1); LocalDate endDate = date.plusDays(7); return getDates(startDate.format(formatter), endDate.format(formatter)); } public static void main(String[] args) { String dateStr = "2022-01-01"; List<String> dates = getDatesOneDayBeforeAndSevenDaysAfter(dateStr); System.out.println(dates); } } ``` 该方法中,`getDates`方法用于获取两个日期之间日期集合,`getDatesOneDayBeforeAndSevenDaysAfter`方法则是根据传入的日期字符串,获取该日期前一天到后七天的日期集合。最后在`main`方法中调用`getDatesOneDayBeforeAndSevenDaysAfter`方法,并将返回日期集合打印出来。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值