eg:
20180901 -- 20180930
->>>>
20180901-20180915 && 20180916-20180930
/** * 獲取兩日期相差天數 * * @param beginDateStr 時間起點 * @param endDateStr 時間終點 * @param TimeType 時間類型 yyyy-MM-dd || yyyyMMdd || .... * @return long /天數 */ public static long getDaySub(String beginDateStr, String endDateStr, String TimeType) { long day = 0; SimpleDateFormat format; try { format = new SimpleDateFormat(TimeType); } catch (Exception e) { System.out.println("getDaySub——>TimeType:"+TimeType); format = new SimpleDateFormat("yyyy-MM-dd"); } Date beginDate; Date endDate; try { beginDate = format.parse(beginDateStr); endDate = format.parse(endDateStr); day = (endDate.getTime() - beginDate.getTime()) / (24 * 60 * 60 * 1000); } catch (Exception e) { System.out.println("獲取兩時間差值出現異常 begin:" + beginDateStr + " end:" + endDateStr); } if (day < 0) { day = day * -1; } return day; } /** * 將一段時間分割為兩個連續的時間段 * * @param dp 時間集合 <開始時間,結束時間> * @param TimeType 時間類型 yyyy-MM-dd || yyyyMMdd || .... * @return 1.兩個相連的時間集合 2.null */ public static List<Pair<String, String>> cutDatePair(Pair<String, String> dp, String TimeType) { List<Pair<String, String>> lst = new ArrayList<>(); long ts = getDaySub(dp.left(), dp.right(), TimeType); if (ts < 2) { return null; } int day = (int) ts / 2; SimpleDateFormat format; try { format = new SimpleDateFormat(TimeType); } catch (Exception e) { format = new SimpleDateFormat("yyyy-MM-dd"); } Date beginDate; try { beginDate = format.parse(dp.left()); Calendar beginDataEnd = Calendar.getInstance(); beginDataEnd.setTime(beginDate); beginDataEnd.add(Calendar.DAY_OF_YEAR, day);//"開始"的結束時間 Calendar endDataBegin = Calendar.getInstance(); endDataBegin.setTime(beginDate); endDataBegin.add(Calendar.DAY_OF_YEAR, day + 1);//"結束"的開始時間 lst.add(new Pair<>(dp.left(), format.format(beginDataEnd.getTime()))); lst.add(new Pair<>(format.format(endDataBegin.getTime()), dp.right())); System.out.println( "拆分時間 " + dp.left() + "-" + dp.right() + " -->> " + dp.left() + "-" + format .format(beginDataEnd.getTime()) + " and " + format.format(endDataBegin.getTime()) + "-" + dp.right()); } catch (Exception e) { } if(lst.isEmpty() || lst.size()!=2){ return null; } return lst; }
