版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_20086125/article/details/82805466
工具类:
/** * @Description: 根据bgnTime,endTime生成该时间范围内的日期集合 * @author * @date 2018年09月21日 17:01:38 * @param bgnTime * @param endTime * @return * */ public static TreeSet<Date> getCreateExtractDays(Date bgnTime, Date endTime) { TreeSet<Date> daysSet=new TreeSet<>(); long tmp = (endTime.getTime() - bgnTime.getTime()) / 24 / 3600000 + 1; int days = Long.valueOf(tmp).intValue(); for (int i = 0; i < days; i++) { Calendar c = Calendar.getInstance(); c.setTime(bgnTime); c.add(Calendar.DAY_OF_YEAR, i); daysSet.add(c.getTime()); } return daysSet; } /** * @Description: 去除已存在的日期数据,返回剩余的日期数据 * @author * @date 2018年09月21日 17:02:07 * @param bgnTime * @param endTime * @param days 已存在的日期数据 * @return * */ public static TreeSet<Date> getTrueExtractDays(Date bgnTime, Date endTime, List<Date> days) { TreeSet<Date> daysSet=getCreateExtractDays(bgnTime,endTime); for (Date day:days){ daysSet.remove(day); } return daysSet; }
/** * 取指定日期的零点时间 * @author * @param calendar 日期对象 * @return 某年某月某日零点的日期对象 */ public static Calendar getBeginTimeCalendar(Calendar calendar) { calendar.set(Calendar.HOUR_OF_DAY, 0); // 将日期中时设为零 calendar.set(Calendar.MINUTE, 0); // 将日期中分设为零 calendar.set(Calendar.SECOND, 0); // 将日期中秒设为零 calendar.set(Calendar.MILLISECOND, 0); // 将日期中毫秒设为零 return calendar; } /** * 取指定日期的结束时间 * @author * @param calendar 日期对象 * @return 某年某月某日 */ public static Calendar getEndTimeCalendar(Calendar calendar) { calendar.set(Calendar.HOUR_OF_DAY, 23); // 将日期中时设为23 calendar.set(Calendar.MINUTE, 59); // 将日期中分设为59 calendar.set(Calendar.SECOND, 59); // 将日期中秒设为59 calendar.set(Calendar.MILLISECOND, 999);// 将日期中毫秒设为999 return calendar; }
应用案例:
public static void main(String[] args) throws ParseException { String bgnTimeStr="2018-09-10"; String endTimeStr="2018-09-26"; List<Date> days=new ArrayList<>(); days.add(getSetDate(new Date(),0)); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date bgnTime = sdf.parse(bgnTimeStr); Date endTime = sdf.parse(endTimeStr); TreeSet<Date> dSet=getCreateExtractDays(bgnTime,endTime); for(Date d:dSet){ // System.out.println(d); } TreeSet<Date> ddSet=getTrueExtractDays(bgnTime,endTime,days); for(Date d:ddSet){ System.out.println(d); } }
控制台打印:
Mon Sep 10 00:00:00 CST 2018
Tue Sep 11 00:00:00 CST 2018
Wed Sep 12 00:00:00 CST 2018
Thu Sep 13 00:00:00 CST 2018
Fri Sep 14 00:00:00 CST 2018
Sat Sep 15 00:00:00 CST 2018
Sun Sep 16 00:00:00 CST 2018
Mon Sep 17 00:00:00 CST 2018
Tue Sep 18 00:00:00 CST 2018
Wed Sep 19 00:00:00 CST 2018
Thu Sep 20 00:00:00 CST 2018
Sat Sep 22 00:00:00 CST 2018
Sun Sep 23 00:00:00 CST 2018
Mon Sep 24 00:00:00 CST 2018
Tue Sep 25 00:00:00 CST 2018
Wed Sep 26 00:00:00 CST 2018
当天为2018-9-21,结果里面已经去除