1. 程式人生 > >去除多餘的日期陣列

去除多餘的日期陣列

工具類:

/**
 * @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,結果裡面已經去除