业务需求想获取一个月中的有几个周一,并获取对应的日期,在网上找了一圈, 没找到,就动手写了一个,记录下。
直接上代码:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.LinkedList;
import java.util.List;
import com.alibaba.fastjson.JSONObject;
public class DateUtilWeek {
public static void main(String[] args) throws ParseException {
getWeekS(2022, 1);
}
public static JSONObject getWeekS(Integer year, Integer month) throws ParseException {
List<String> weeks = new LinkedList<>();
int tongji = 0;
Calendar c = Calendar.getInstance();
c.set(year, month - 1, 1);
int mountDay = c.getActualMaximum(Calendar.DAY_OF_MONTH);
SimpleDateFormat sim = new SimpleDateFormat("yyyy-MM-dd E");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
for (int i=1;i<=mountDay;i++) {
String date1 = year + "-";
if (month < 10) {
date1 += "0" + month + "-";
} else {
date1 += month + "-";
}
if (i < 10) {
date1 += "0" + i;
} else {
date1 += i;
}
String dateStr = sim.format(sdf.parse(date1));
String weekStr = dateStr.substring(11,14);
if ("星期一".equals(weekStr)) {
weeks.add(date1);
tongji++;
}
}
JSONObject data = new JSONObject();
data.put("num", tongji);
data.put("list", weeks);
return data;
}
}