计算出给定日期所在周的周一和周日
结果类:
import java.util.Date;
public class Week {
private Date date; //日期
private Date start; //date所在周的第一天(星期一)
private Date end; //date所在周的最后一天(星期日)
public Week(Date date){
this.date = date;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public Date getStart() {
return start;
}
public void setStart(Date start) {
this.start = start;
}
public Date getEnd() {
return end;
}
public void setEnd(Date end) {
this.end = end;
}
}
工具方法:
import org.apache.commons.lang.time.DateUtils;
/**
* 计算出给定日期所在周的周一和周日
*
* @param date
* @return
* @throws ParseException
*/
public static Week getWeekByDate(Date date) throws ParseException {
Date _date = DateUtils.truncate(date, Calendar.DAY_OF_MONTH);
Calendar c = Calendar.getInstance();
c.setTime(_date);
// 星期:1,2,3,4,5,6,7
int iWeek = c.get(Calendar.DAY_OF_WEEK);
//时期日->星期八
if(iWeek == 1){
iWeek = 8;
}
Week week = new Week(_date);
// 算出离星期一(2)的距离
week.setStart(DateUtils.addDays(_date, 2 - iWeek));
// 算出离星期日(8)的距离
week.setEnd(DateUtils.addDays(_date, 8 - iWeek));
return week;
}
测试代码:
public static void main(String[] args) throws Exception {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
Date date = DateUtils.parseDate("2011-05-11", new String[] { "yyyy-MM-dd" });
System.out.println("------" + df.format(date) + "------");
Week week = getWeekByDate(date);
System.out.println(df.format(week.getStart()));
System.out.println(df.format(week.getEnd()));
date = DateUtils.parseDate("2011-05-09", new String[] { "yyyy-MM-dd" });
System.out.println("------" + df.format(date) + "------");
week = getWeekByDate(date);
System.out.println(df.format(week.getStart()));
System.out.println(df.format(week.getEnd()));
date = DateUtils.parseDate("2011-05-15", new String[] { "yyyy-MM-dd" });
System.out.println("------" + df.format(date) + "------");
week = getWeekByDate(date);
System.out.println(df.format(week.getStart()));
System.out.println(df.format(week.getEnd()));
}
测试结果:
------2011-05-11 00:00:00 000------
2011-05-09 00:00:00 000
2011-05-15 00:00:00 000
------2011-05-09 00:00:00 000------
2011-05-09 00:00:00 000
2011-05-15 00:00:00 000
------2011-05-15 00:00:00 000------
2011-05-09 00:00:00 000
2011-05-15 00:00:00 000