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<String> getBetweenDate(WeekDate weekD){
String start=weekD.getStartDate();
String end=weekD.getEndDate();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// 声明保存日期集合
List<String> list = new ArrayList<String>();
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 + '\'' +
'}';
}
}