1、Java获取某年某周的最后一天
public static Date getLastDayOfWeek(int year, int week) {
Calendar c = new GregorianCalendar();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, Calendar.JANUARY);
c.set(Calendar.DATE, 1);
Calendar cal = (GregorianCalendar) c.clone();
cal.add(Calendar.DATE, week * 7);
return getLastDayOfWeek(cal.getTime());
}
public static Date getLastDayOfWeek(Date date) {
Calendar c = new GregorianCalendar();
c.setFirstDayOfWeek(Calendar.MONDAY);
c.setTime(date);
c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek() + 6); // Sunday
return c.getTime();
}
调用getLastDayOfWeek(int year, int week)方法,注意:每年的第一周是按照0开始的
2、获取某天是某年的第几周
public static Integer weekOfYear(Date date){
Calendar calendar = Calendar.getInstance();
calendar.setFirstDayOfWeek(Calendar.MONDAY);
calendar.setTime(date);
return calendar.get(Calendar.WEEK_OF_YEAR);
}
3、得到两个日期中间的所有日期
public List<String> genDateList(Date beginDate, Date endDate) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM月dd日");
List<String> dateList = new ArrayList<String>();
Calendar start = Calendar.getInstance();
start.setTime(beginDate);
Long startTIme = start.getTimeInMillis();
Calendar end = Calendar.getInstance();
end.setTime(endDate);
Long endTime = end.getTimeInMillis();
Long oneDay = 1000 * 60 * 60 * 24l;
Long time = startTIme;
while (time <= endTime) {
dateList.add(simpleDateFormat.format(new Date(time)));
time += oneDay;
}
return dateList;
}
4、得到两个日期中间总共有多少天
public static int genDateNum(Date beginDate, Date searchDate) {
Calendar start = Calendar.getInstance();
start.setTime(beginDate);
Long startTIme = start.getTimeInMillis();
Calendar end = Calendar.getInstance();
end.setTime(searchDate);
Long endTime = end.getTimeInMillis();
Long oneDay = 1000 * 60 * 60 * 24l;
Long time = startTIme;
int count = 0;
while (time <= endTime) {
count++;
time += oneDay;
}
return count;
}