java日期工具类——获取前一天的日期(不包括周六日)

项目中有个需求,要求做一个定时任务,每个工作日的指定时间做一些操作进行积分的增加,增加之前需要查询前一天的积分,然后根据这个需求自己写了一个工具类,不知道有没有其他更简单的办法,现在跟大家分享下:

public static String getPreDay(){
    Calendar c = Calendar.getInstance(TimeZone.getTimeZone("GMT+08:00"));
    String year = c.get(Calendar.YEAR) + "";
    String month = (c.get(Calendar.MONTH) + 1)+"";
    String day = c.get(Calendar.DAY_OF_MONTH) + "";
    if(month.length() == 1){
        month = "0"+month;
    }
    if(day.length()==1){
        day = "0"+day;
    }
    //获取上个月的最大天数
    c.add(Calendar.MONTH, 1);
    c.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天
    c.add(Calendar.DATE, -1);//设置上个月的最后一天
    c.set(Calendar.DAY_OF_MONTH, 0);
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    String last = Integer.valueOf(sdf.format(c.getTime()).split("-")[2])+"";
    String weekOfDate = getWeekOfDate(new Date());
    String preToday = "";
    if("星期一".equals(weekOfDate)){
        if("01".equals(month)){
            //如果是1月
            int preMonth = 12;
            if("03".equals(day)){
                preToday = year+ (preMonth+"") + last;
            }else if("02".equals(day)){
                preToday = year + (preMonth+"") + ((Integer.valueOf(last)-1)+"");
            }else if("01".equals(day)){
                preToday = (((Integer.valueOf(year)-1) +"") + (preMonth+"") + ((Integer.valueOf(last)-2))+"");
            }else{
                preToday = ((Integer.valueOf(year)-1) +"") + month + isDayLength((Integer.valueOf(day)-3)+"");
            }
        }else{
            //其他月
            if("03".equals(day)){
                preToday = year + (isMonthLength(Integer.valueOf(month)-1+"")) + ((last)+"");
            }else if("02".equals(day)){
                preToday = year + (isMonthLength(Integer.valueOf(month)-1+"")) + ((Integer.valueOf(last)-1)+"");
            }else if("01".equals(day)){
                preToday = year + (isMonthLength(Integer.valueOf(month)-1+"")) + ((Integer.valueOf(last)-2)+"");
            }else {
                //其他天
                preToday = year + month + isDayLength((Integer.valueOf(day)-3)+"");
            }
        }
    }else if("星期六".equals(weekOfDate) ||"星期日".equals(weekOfDate) ){
        //如果是1月
        if("01".equals(month)){
            int preMonth = 12;
            if("02".equals(day)){
                if("星期六".equals(weekOfDate)){
                    preToday = (((Integer.valueOf(year)-1)) +"") + month + isDayLength((Integer.valueOf(day)-1)+"");
                }else{
                    preToday = (((Integer.valueOf(year)-1)) +"") + (preMonth+"") + ((last)+"");
                }
            }else if("01".equals(day)){
                if("星期六".equals(weekOfDate)){
                    preToday = (((Integer.valueOf(year)-1)) +"") + (preMonth+"") + ((last)+"");
                }else{
                    preToday = (((Integer.valueOf(year)-1) +"") + (preMonth+"") + ((Integer.valueOf(last)-1))+"");
                }
            }else{
                if("星期六".equals(weekOfDate)){
                    preToday = year + month + isDayLength((Integer.valueOf(day)-1)+"");
                }else{
                    preToday = year + month + isDayLength((Integer.valueOf(day)-2)+"");
                }
            }
        }else {
            //不是1月份
            if("01".equals(day)){
                if("星期六".equals(weekOfDate)){
                    preToday = year + (isMonthLength(Integer.valueOf(month)-1+"")) + ((last)+"");
                }else if("星期日".equals(weekOfDate)){
                    preToday = year + (isMonthLength(Integer.valueOf(month)-1+"")) + ((Integer.valueOf(last)-1)+"");
                }
            }else if("02".equals(day)){
                if("星期六".equals(weekOfDate)){
                    preToday = year + month + isDayLength((Integer.valueOf(day)-1)+"");
                }else if("星期日".equals(weekOfDate)){
                    preToday = year + (isMonthLength(Integer.valueOf(month)-1+"")) + ((last)+"");
                }
            }else{
                if("星期六".equals(weekOfDate)){
                    preToday = year + month + isDayLength((Integer.valueOf(day)-1)+"");
                }else if("星期日".equals(weekOfDate)){
                    preToday = year + month + isDayLength((Integer.valueOf(day)-2)+"");
                }
            }
        }
    }else{
        //不是周六日和周一
        //如果是1月
        if("01".equals(month)){
            int preMonth = 12;
            if("01".equals(day)){
                preToday = (((Integer.valueOf(year)-1)) +"") + (preMonth+"") + ((last)+"");
            }else{
                preToday = year + month + isDayLength((Integer.valueOf(day)-1)+"");
            }
        }else {
            //不是1月
            if("01".equals(day)){
                preToday = year + (isMonthLength(Integer.valueOf(month)-1+"")) + ((last)+"");
            }else{
                preToday = year + month + isDayLength((Integer.valueOf(day)-1)+"");
            }
        }
    }
    return preToday;
}
private static String isDayLength(String day){
    if(day.length() == 1){
        day = "0"+ day;
    }
    return day;
}

不喜勿喷,欢迎各位大佬提建议帮我改进 (* ̄︶ ̄)

猜你喜欢

转载自blog.csdn.net/qq_38464466/article/details/82018699