java 将一段时间分割为两个连续的时间
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; }
用自己的努力创造我们的未来