去除多餘的日期陣列
阿新 • • 發佈:2018-12-11
工具類:
/** * @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,結果裡面已經去除