使用JAVA获取每一周中的七个日期(一周中的每一天)

1.GetMW类

public class GetMW {

    public static void main(String[] args){
        System.out.println(getDates("2023;15"));
    }
    public static List getDates(String yearWeek){
        String year=yearWeek.split(";")[0];
        String week=yearWeek.split(";")[1];
        SimpleDateFormat sdf = new SimpleDateFormat("E");//获取日期在星期几
        Date date = null;
        try {
            date = new SimpleDateFormat("yyyy-MM-dd").parse(year+"-01-01");//获取当年第一天
        } catch (ParseException e) {
            e.printStackTrace();
        }
        String fristWeek1=sdf.format(date);//获取日期在星期几
        int firstWeek=1;
        switch (fristWeek1){//转换成int
            case "星期一":
                firstWeek=2;
                break;
            case "星期二":
                firstWeek=3;
                break;
            case "星期三":
                firstWeek=4;
                break;
            case "星期四":
                firstWeek=5;
                break;
            case "星期五":
                firstWeek=6;
                break;
            case "星期六":
                firstWeek=7;
                break;
            case "星期日":
                firstWeek=1;
                break;
            default:
                break;
        }
        WeekDate weekD=new WeekDate();
        SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
        if(firstWeek==1){
        //如果当年第一天是星期天
            int day1=Integer.parseInt(week)*7-7;
            //获取第n周星期天为day1
            int day7=Integer.parseInt(week)*7-1;
            //获取第n周星期六为day7
            List getDate = getList(year, weekD, day1, day7);
            if (getDate != null) return getDate;

        }else{
            if(Integer.parseInt(week)==1){
            //如果01-01不是星期天求当年第一周
                try {
                    Date date1=new SimpleDateFormat("yyyy-MM-dd").parse(year+"-01-01");
                    Date startDate=DateUtils.addDays(date1, -(firstWeek-1));
                    //该周第一天在上一年
                    Date endDate=DateUtils.addDays(date1, (7-firstWeek));
                    //该周最后一天
                    weekD.setStartDate(simpleDateFormat.format(startDate));
                    weekD.setEndDate(simpleDateFormat.format(endDate));
                    GetDate getDate = null;
                    return getDate.getBetweenDate(client);
                } catch (ParseException e) {
                    e.printStackTrace();
                }
            }else{
            //如果01-01不是星期天求当年第n周
                int day1=(Integer.parseInt(week)-1)*7-firstWeek+1;
                int day7=Integer.parseInt(week)*7-firstWeek;
                List getDate = getList(year, weekD, day1, day7);
                if (getDate != null) return getDate;
            }
        }
        return null;
    }

    private static List getList(String year, WeekDate weekD, int day1, int day7) {
        try {
            SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
            Date date1=new SimpleDateFormat("yyyy-MM-dd").parse(year+"-01-01");
            Date startDate= DateUtils.addDays(date1, day1);
            Date endDate=DateUtils.addDays(date1, day7);
            weekD.setStartDate(simpleDateFormat.format(startDate));
            weekD.setEndDate(simpleDateFormat.format(endDate));
            GetDate getDate = null;
            return getDate.getBetweenDate(client);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }

}

2.GetDate类

public class GetDate {
    /**
     *  获取两个日期之间的所有日期 (年月日)
     *
     * @param
     * @param
     * @return
     */
    public static List getBetweenDate(WeekDate weekD){
        String start=weekD.getStartDate();
        String end=weekD.getEndDate();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        // 声明保存日期集合
        List list = new ArrayList();
        try {
            // 转化成日期类型
            Date startDate = sdf.parse(start);
            Date endDate = sdf.parse(end);

            //用Calendar 进行日期比较判断
            Calendar calendar = Calendar.getInstance();
            while (startDate.getTime()<=endDate.getTime()){
                // 把日期添加到集合
                list.add(sdf.format(startDate));
                // 设置日期
                calendar.setTime(startDate);
                //把日期增加一天
                calendar.add(Calendar.DATE, 1);
                // 获取增加后的日期
                startDate=calendar.getTime();
            }
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return list;
    }

}

3.WeekDate 类

public class WeekDate {
    private String startDate;
    private String endDate;

    public WeekDate() {
    }

    public String getStartDate() {
        return startDate;
    }

    public void setStartDate(String startDate) {
        this.startDate = startDate;
    }

    public String getEndDate() {
        return endDate;
    }

    public void setEndDate(String endDate) {
        this.endDate = endDate;
    }

    @Override
    public String toString() {
        return "WeekDate{" +
                "startDate='" + startDate + '\'' +
                ", endDate='" + endDate + '\'' +
                '}';
    }
}

你可能感兴趣的:(java,jvm,servlet)