/**
* 获取当前时间年月周(按每月周一开始到周日算第一周)
* @return
* @throws Exception
*/
public static String getYearMonthWeek() {
try {
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
//获取当前日期的周一
Date date = DateUtils.getThisWeekMonday(new Date());
sdf1.setLenient(false);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) + 1;
SimpleDateFormat sdf2 = new SimpleDateFormat("EEE");
List<Object> list = new ArrayList<>();
for (int i = 1; i < 32; i++) {
try {
Date date1 = sdf1.parse(year + "-" + month + "-" + i);
if ("星期一".equals(sdf2.format(date1))) {
list.add(date1);
}
} catch (ParseException e) {
}
}
for (int i = 0; i < list.size(); i++) {
Calendar cal = Calendar.getInstance();
//周一
Date monDate = (Date) list.get(i);
//周日
cal.setTime(monDate);
cal.add(Calendar.DATE, 6);
Date SunDate = cal.getTime();
if (date.getTime() >= monDate.getTime() && date.getTime() <= SunDate.getTime()) {
StringBuilder sb = new StringBuilder();
sb.append(String.valueOf(year));
sb.append(String.valueOf("-"));
sb.append(String.valueOf(month));
sb.append(String.valueOf("-"));
sb.append(String.valueOf(i + 1));
return sb.toString();
}
}
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
public static Date getThisWeekMonday(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
// 获得当前日期是一个星期的第几天
int dayWeek = cal.get(Calendar.DAY_OF_WEEK);
if (1 == dayWeek) {
cal.add(Calendar.DAY_OF_MONTH, -1);
}
// 设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
cal.setFirstDayOfWeek(Calendar.MONDAY);
// 获得当前日期是一个星期的第几天
int day = cal.get(Calendar.DAY_OF_WEEK);
// 根据日历的规则,给当前日期减去星期几与一个星期第一天的差值
cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);
return cal.getTime();
}