week=0 代表本周,-1代表上周,1代表下周,2代表下下周,依次类推
day= 0代表当天,1代表第二天,-1代表前一天,依次类推,相关代码如下:
/**
* @param week 0:本周,1下一周,-1上一周
* @param day 0:当天,1:第二天,-1前一天
* @return
*/
public static Date getBeginTime(int week, int day) {
Date weekStart = getBeginDayOfWeek(week);
Date date = getWeekDayByIn(day, weekStart);
return date;
}
public static Date getWeekDayByIn(int day, Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DATE, day);
return getDayStartTime(calendar.getTime());
}
/**
* 获取本周开始时间
*
* @return
*/
public static Date getBeginDayOfWeek(int week) {
Calendar calendar = Calendar.getInstance(Locale.CHINA);
calendar.setFirstDayOfWeek(Calendar.MONDAY);//以周一为首日
calendar.setTimeInMillis(System.currentTimeMillis());//当前时间
calendar.add(Calendar.DAY_OF_WEEK,week*7);
calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);//周一
return getDayStartTime(calendar.getTime());
}
/**
* 获取某个日期的开始时间
*
* @param d
* @return
*/
public static Timestamp getDayStartTime(Date d) {
Calendar calendar = Calendar.getInstance();
if (null != d)
calendar.setTime(d);
calendar
.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0, 0,
0);
calendar.set(Calendar.MILLISECOND, 0);
return new Timestamp(calendar.getTimeInMillis());
}
public static void main(String args[]) {
Date date = getBeginTime(0,1);
System.out.println(date);
}