weekDays的值示例:
周一到周日的值为:[2, 3, 4, 5, 6, 7, 1]
package com.jbh.object;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
public class DateUtil {
public static List<Date> getNearThreeMonDaysByWeekDays(int[] weekDays) {
List<Date> dates = new ArrayList<Date>();
int start = 1; //月份都是从1号开始
int dayCountOfMonth = 30; //默认每月共30天
//临近3个月的时间
for (int i = 0; i < 3; i++) {
Calendar calendar = Calendar.getInstance();
/*
* i是正数就是后i月,i是负数就是前i月,i是几就加几月,这里的例子是后3个月
*/
calendar.add(Calendar.DATE, i); // 得到某一天
calendar.add(Calendar.MONTH, i); // 得到某一个月
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) + 1;
dayCountOfMonth = getDayCount(year, month);
//月中天数循环
for (int j = start; j <= dayCountOfMonth; j++) {
calendar.set(year, month - 1, j, 0, 0, 0);
for (int k = 0; k < weekDays.length; k++) {
if (calendar.get(Calendar.DAY_OF_WEEK) == weekDays[k]) {
dates.add(calendar.getTime());
}
}
}
}
return dates;
}
private static int getDayCount(int year, int month) {
Calendar calendar = Calendar.getInstance();
calendar.set(year, month, 0);
calendar.add(Calendar.MONTH, 1);
calendar.set(Calendar.DAY_OF_MONTH, 0);
return calendar.get(Calendar.DATE);
}
public static void main(String[] args) {
int[] weekDays = new int[]{7};<span style="white-space:pre"> </span>//周六
List<Date> dates = getNearThreeMonDaysByWeekDays(weekDays);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
for(Date date : dates) {
System.out.println(sdf.format(date));
}
}
}