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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM