java获取指定日期所在周的第一天和最后一天
第一种方法
public static String getFirstAndLastOfWeek(String dataStr) throws ParseException {
Calendar cal = Calendar.getInstance();
cal.setTime(new SimpleDateFormat("yyyy-MM-dd").parse(dataStr));
int d = 0;
if (cal.get(Calendar.DAY_OF_WEEK) == 1) {
d = -6;
} else {
d = 2 - cal.get(Calendar.DAY_OF_WEEK);
}
cal.add(Calendar.DAY_OF_WEEK, d);
// 所在周开始日期
String data1 = new SimpleDateFormat("yyyy/MM/dd").format(cal.getTime());
cal.add(Calendar.DAY_OF_WEEK, 6);
// 所在周结束日期
String data2 = new SimpleDateFormat("yyyy/MM/dd").format(cal.getTime());
return data1 + "-" + data2;
}
第二种方法
public static String getFirstAndLastOfWeek(int date) throws ParseException {
Date InputDate = new SimpleDateFormat("yyyyMMdd").parse(String.valueOf(20140101));
Calendar cDate = Calendar.getInstance();
cDate.setFirstDayOfWeek(Calendar.MONDAY);
cDate.setTime(InputDate);
Calendar firstDate = Calendar.getInstance();
firstDate.setFirstDayOfWeek(Calendar.MONDAY);
firstDate.setTime(InputDate);
Calendar lastDate = Calendar.getInstance();
lastDate.setFirstDayOfWeek(Calendar.MONDAY);
lastDate.setTime(InputDate);
if (cDate.get(Calendar.WEEK_OF_YEAR) == 1 && cDate.get(Calendar.MONTH) == 11) {
firstDate.set(Calendar.YEAR, cDate.get(Calendar.YEAR) + 1);
lastDate.set(Calendar.YEAR, cDate.get(Calendar.YEAR) + 1);
}
int typeNum = cDate.get(Calendar.WEEK_OF_YEAR);
System.out.println(typeNum);
firstDate.set(Calendar.WEEK_OF_YEAR, typeNum);
firstDate.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
// 所在周开始日期
String beginDate = new SimpleDateFormat("yyyy/MM/dd").format(firstDate.getTime());
System.out.println(beginDate);
lastDate.set(Calendar.WEEK_OF_YEAR, typeNum);
lastDate.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
// 所在周结束日期
String endDate = new SimpleDateFormat("yyyy-MM-dd").format(lastDate.getTime());
System.out.println(endDate);
return beginDate + "-" + endDate;
}