如何获取周期截止时间

  • 周期字符格式化
/**
     * 获取周期时间字符
     * 
     * @title
     * @description 周期类型 -1:一次性,0:每日,1:每周,2:每月,3:每季度,4:每半年,5:每年
     * @author fjh
     * @date 2023年5月31日上午11:29:54
     * @param reportCycle
     * @return
     */
    public static String getTimeType(String reportCycle) {
        LocalDate now = LocalDate.now();
        DateTimeFormatter dfDate = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        if ("0".equals(reportCycle)||"-1".equals(reportCycle)) {
            return dfDate.ofPattern("yyyy年MM月dd日").format(now);

        } else if ("1".equals(reportCycle)) {

            return dfDate.ofPattern("yyyy年ww周").format(now);
        } else if ("2".equals(reportCycle)) {

            return dfDate.ofPattern("yyyy年MM月").format(now);
        } else if ("3".equals(reportCycle)) {

            return dfDate.ofPattern("yyyy年q季度").format(now);
        } else if ("4".equals(reportCycle)) {
            int m = now.getMonth().getValue();
            int y = now.getYear();

            if (m <= 6) {
                return y + "年上半年";
            }
            return y + "年下半年";
        } else if ("5".equals(reportCycle)) {
            return dfDate.ofPattern("yyyy年").format(now);
        }

        return dfDate.format(now);
    }
  • 获取周期截止时间

 

/**
     * 截至时间
     * 
     * @title
     * @description 周期类型 -1:一次性,0:每日,1:每周,2:每月,3:每季度,4:每半年,5:每年
     * @author fjh
     * @date 2023年5月31日下午3:04:39
     * @param reportCycle
     * @return
     */
    public static Date getDeadline(String reportCycle,Integer delayNum) {

        Date lastDate = new Date();
        Calendar cal = Calendar.getInstance();
        cal.setTime(lastDate);
        if ("0".equals(reportCycle)) {//
            cal.add(Calendar.DATE, 0);
        } else if ("1".equals(reportCycle)) {//
            int day_of_week = cal.get(Calendar.DAY_OF_WEEK) - 1;
            if (day_of_week == 0)
                day_of_week = 7;
            cal.add(Calendar.DATE, -day_of_week + 7);
        } else if ("2".equals(reportCycle)) {//
            cal.set(Calendar.MONTH, cal.get(Calendar.MONTH));
            cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
        } else if ("3".equals(reportCycle)) {//季度
            int lastMonth = getQuarter(cal.get(cal.MONTH) + 1) * 3;
            cal.set(Calendar.MONTH, lastMonth - 1);
            cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
        } else if ("4".equals(reportCycle)) {//半年
            int m = cal.get(cal.MONTH) + 1;
            if (m <= 6) {
                cal.set(Calendar.MONTH, 6 - 1);
                cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
            } else {
                cal.set(Calendar.MONTH, 12 - 1);
                cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
            }
        } else if ("5".equals(reportCycle)) {//
            cal.set(Calendar.MONTH, 12 - 1);
            cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
        } else if ("-1".equals(reportCycle)) {//一次性
            if(delayNum!=null)cal.add(Calendar.DATE, delayNum);
        }
        cal.set(Calendar.HOUR_OF_DAY, 23);
        cal.set(Calendar.MINUTE, 59);
        lastDate = cal.getTime();
        return lastDate;
    }

    /**
     * 获取季度
     * 
     * @title
     * @description
     * @author fjh
     * @date 2023年5月31日下午3:01:09
     * @return
     */
    public static int getQuarter(int month) {
        int quarter = 0;
        if (month >= 1 && month <= 3) {
            quarter = 1;
        } else if (month >= 4 && month <= 6) {
            quarter = 2;
        } else if (month >= 7 && month <= 9) {
            quarter = 3;
        } else {
            quarter = 4;
        }
        return quarter;
    }

 

posted @ 2023-06-06 15:05  嘻嘻哈哈大只佬  阅读(7)  评论(0编辑  收藏  举报