zoukankan      html  css  js  c++  java
  • 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;
      }
  • 相关阅读:
    在线学习Java免费资源推荐
    pycharm控制台输出乱码
    服务器质检文件传输——scp
    git使用小结
    更换python依赖包的下载路径
    查看某一时间段的cpu使用情况,sar(监控系统性能)
    运行脚本:‘$’ ’: 未找到命令’错误
    bash脚本,获取当前日期或时间作为参数
    installing new crontab-添加调度任务成功
    Mysql-删除数据表-三种方式详解
  • 原文地址:https://www.cnblogs.com/yishilin/p/9728937.html
Copyright © 2011-2022 走看看