1、此计算方法计算第几周,从周一开始,本年1月1号不是第一周,从周日开始本年1,月1号为第一周
Calendar calendar = Calendar.getInstance();
calendar.setFirstDayOfWeek(Calendar.SUNDAY); // 设置每周的第一天为星期一
calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);// 每周从周一开始
calendar.setMinimalDaysInFirstWeek(7); // 设置每周最少为7天
calendar.setTime(date);
2、此算法获取本周的7天日期
private static List<WeekDay> getWeekDay(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setFirstDayOfWeek(Calendar.SUNDAY); // 设置每周的第一天为星期一
calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);// 每周从周一开始
calendar.setMinimalDaysInFirstWeek(7); // 设置每周最少为7天
calendar.setTime(date);
// 获取本周的第一天
int firstDayOfWeek = calendar.getFirstDayOfWeek();
List<WeekDay> list = new ArrayList<>();
for (int i = 0; i < 7; i++) {
calendar.set(Calendar.DAY_OF_WEEK, firstDayOfWeek + i);
WeekDay weekDay = new WeekDay();
// 获取星期的显示名称,例如:周一、星期一、Monday等等
weekDay.week = calendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.SHORT, Locale.ENGLISH);
weekDay.day = new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime());
list.add(weekDay);
}
return list;
}
3、此算法,当年的1月1号为第一周
public static String getYearWeek(Date date) {
Calendar cal = Calendar.getInstance();//这一句必须要设置,否则美国认为第一天是周日,而我国认为是周一,对计算当期日期是第几周会有错误
int weekYear = cal.get(Calendar.YEAR);//获得当前的年
cal.set(weekYear, 0,1);// 每周从周一开始
cal.setTime(date);
int weeks = cal.get(Calendar.WEEK_OF_YEAR);
return weeks + "";
}