zoukankan      html  css  js  c++  java
  • 自然月合同月的日期拆分

           /**
         * 自然月拆分
         * @param beginDate  开始时间
         * @return
         * beginDate 开始时间
         * endDate   本月结束时间
         * preDate   下月开始时间
         * dateNum   开始及结束时间之间的天数
         * mothNum   当月天数
         */
        public static ExtendMap<String, Object> naturalMonthSplit(Date beginDate){
            Date    preDate = DateUtils.ceiling(beginDate, Calendar.MARCH) ;  // 2018-04-01
            Date    endDate = DateUtils.addDays(preDate, -1)  ; // 2018-03-31
            long dateNum = DataTimeUtils.differentDate("DAY", beginDate, endDate)+ 1  ;          //26
            long mothNum = DataTimeUtils.differentDate("DAY", getPreMonthDate(beginDate), endDate)+1  ;           //31
            ExtendMap<String, Object> returnMap = new ExtendMap<>();
            returnMap.put("beginDate",beginDate);
            returnMap.put("endDate",endDate);
            returnMap.put("preDate", preDate);
            returnMap.put("dateNum", dateNum);
            returnMap.put("mothNum", mothNum);
            return returnMap ;
        }
        /**
         * 自然月拆分
         * 获取开始时间到结束时间中每个月的时间及天数
         * @param beginDate 开始时间
         * @param endDate   结束时间
         * @return
         */
        public static List<ExtendMap<String, Object>> naturalMonthSplit(Date beginDate , Date endDate){
            List<ExtendMap<String, Object>>  returnList = new  ArrayList<>();
            long num = DataTimeUtils.differentDate("M", beginDate, endDate);
            for(long  i=0; i<=num ; i++) {
                ExtendMap<String, Object> map = new ExtendMap<>();
                map = naturalMonthSplit(beginDate);
                if(i == num){
                    map.put("endDate", endDate);
                    map.put("dateNum", DataTimeUtils.differentDate("D", (Date) map.get("beginDate"), endDate)+1);
                }
                returnList.add(map);
                beginDate = (Date) map.get("preDate");
            }
            return returnList ;
        }
       
        /**
         * 合同月拆分
         * @param beginDate
         * @return
         */
        public static ExtendMap<String, Object> contractMonthSplit(Date beginDate) {
            ExtendMap<String, Object> map = new ExtendMap<>();
            Calendar cal1 = Calendar.getInstance();
            cal1.setTime(beginDate);
            int day = cal1.get(Calendar.DAY_OF_MONTH);
            Date afterDate;
            if(day > 27 ) {
                Date endDate = DateUtils.addMonths(beginDate, 1); 
                Date beginDateTemp =DateUtils.addDays(getPreMonthDate(endDate),-1) ;
                int dayEndNum = (int) DataTimeUtils.differentDate("D", beginDate, beginDateTemp) + 1 ;
                afterDate= DateUtils.addDays(getEndMonthDate(endDate), -dayEndNum);
                map.put("beginDate", beginDate);
                map.put("endDate", afterDate);
            }else {
                afterDate = DateUtils.addDays( DateUtils.addMonths(beginDate, 1),-1); 
                map.put("beginDate", beginDate);
                map.put("endDate", afterDate);
            }
            long dateNum = DataTimeUtils.differentDate("DAY", beginDate, afterDate)+ 1  ;            //26
            long mothNum = DataTimeUtils.differentDate("DAY", beginDate, afterDate)+ 1  ;
            map.put("dateNum", dateNum);
            map.put("mothNum", mothNum);
            return map ;
        }
       
        /**
         * 合同月拆分
         * @param beginDate
         * @param endDate
         * @return
         */
        public static  List<ExtendMap<String, Object>> contractMonthSplit(Date beginDate , Date endDate) {
            List<ExtendMap<String, Object>>  returnList = new  ArrayList<>();
            long num = DataTimeUtils.differentDate("M", beginDate, endDate);
            Date tempDate = beginDate ;
            for(int i=0;i<num;i++) {
                ExtendMap<String, Object> map  =contractMonthSplit(tempDate);
                tempDate = (Date) map.get("endDate");
                tempDate = DateUtils.addDays(tempDate, 1);
                if(i == num){
                    map.put("endDate", endDate);
                    map.put("dateNum", DataTimeUtils.differentDate("D", (Date) map.get("beginDate"), endDate)+1);
                }
                returnList.add(map);
            }
            return returnList ;
        }
        
       
        /**
         * 日期拆分调用
         * @param beginDate
         * @param endDate
         * @param type
         * @return
         */
        public static  List<ExtendMap<String, Object>> dateSplit(Date beginDate , Date endDate , Long type ) {
            if(type == 1) {
                return naturalMonthSplit(beginDate, endDate);
            }else{
                return contractMonthSplit(beginDate, endDate);
            }
        }
        
        
       
        
     
     
  • 相关阅读:
    Yii2 分页
    Yii2 或者当前登录用户帐号
    css3媒体查询判断移动设备横竖屏
    Javascript操作Tr隐藏显示变形~
    php注释标准
    匹配一段html中所有的src
    数据库遇到错误(随时补充)
    NetCore-缓存文件上传和文件流上传
    SVN跨服务器版本迁移
    发票同步微信卡包
  • 原文地址:https://www.cnblogs.com/gemiaomiao/p/10550746.html
Copyright © 2011-2022 走看看