去除多余的日期数组

版权声明:本文为博主原创文章,未经博主允许不得转载。 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,结果里面已经去除

猜你喜欢

转载自blog.csdn.net/qq_20086125/article/details/82805466
今日推荐