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;}
?