获取第N周的日期
使用getWeekDays()方法来获取一周第一天和最后一天的日期
需要定义全局变量 周数
private String year;
private String month;
private String day;
private int weekNum; //周数
private int maxweekNum;
/**
* 根据日期获取第几周
*
* @param today String,格式"2013-01-14"
* @return int 第几周
*/
private int getWeekNumByDate(String today) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try {
date = format.parse(today);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Calendar calendar = Calendar.getInstance();
calendar.setFirstDayOfWeek(Calendar.MONDAY);
calendar.setTime(date);
return calendar.get(Calendar.WEEK_OF_YEAR);
}
private String getDoubleNum(int num) {
String doubleNum;
if (num < 10) {
doubleNum = "0" + String.valueOf(num);
return doubleNum;
} else {
doubleNum = String.valueOf(num);
return doubleNum;
}
}
private String getWeekDays() {
String WeekDays = "";
int putweek = weekNum;
int putyear = Integer.parseInt(year);
if ((weekNum - 1) == 0) { //第一周为去年最后一周
putyear--;
putweek = getMaxWeekNumOfYear(putyear);
} else {
putweek--;
}
WeekDays = String.valueOf(getFirstDayOfWeek(putyear, putweek)) + "-" + String.valueOf(getLastDayOfWeek(putyear, putweek));
return WeekDays;
}
public static int getWeekOfDate(Date dt) {
int[] weekDays = {7, 1, 2, 3, 4, 5, 6};
Calendar cal = Calendar.getInstance();
cal.setTime(dt);
int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
if (w < 0)
w = 0;
return weekDays[w];
}
// 获取某年的第几周的开始日期
public static String getFirstDayOfWeek(int year, int week) {
Calendar c = new GregorianCalendar();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, Calendar.JANUARY);
c.setFirstDayOfWeek(Calendar.MONDAY);
c.set(Calendar.DATE, 1);
Calendar cal = (GregorianCalendar) c.clone();
Calendar c1 = new GregorianCalendar();
c1.set(Calendar.YEAR, year);
c1.set(Calendar.MONTH, Calendar.JANUARY);
c1.set(Calendar.DATE, 1);
c1 = (GregorianCalendar) c1.clone();
int weekend = getWeekOfDate(c1.getTime());
if (weekend != 1) {
cal.add(Calendar.DATE, week * 7);
} else {
cal.add(Calendar.DATE, (week - 1) * 7);
}
return getFirstDayOfWeek(cal.getTime());
}
// 获取某年的第几周的结束日期
public static String getLastDayOfWeek(int year, int week) {
Calendar c = new GregorianCalendar();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, Calendar.JANUARY);
c.setFirstDayOfWeek(Calendar.MONDAY);
c.set(Calendar.DATE, 1);
Calendar cal = (GregorianCalendar) c.clone();
Calendar c1 = new GregorianCalendar();
c1.set(Calendar.YEAR, year);
c1.set(Calendar.MONTH, Calendar.JANUARY);
c1.set(Calendar.DATE, 1);
c1 = (GregorianCalendar) c1.clone();
int weekend = getWeekOfDate(c1.getTime());
if (weekend != 1) {
cal.add(Calendar.DATE, week * 7);
} else {
cal.add(Calendar.DATE, (week - 1) * 7);
}
return getLastDayOfWeek(cal.getTime());
}
// 获取当前时间所在周的开始日期
public static String getFirstDayOfWeek(Date date) {
String backdate = "";
Calendar c = new GregorianCalendar();
c.setFirstDayOfWeek(Calendar.MONDAY);
c.setTime(date);
c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek()); // Monday
date = c.getTime();
SimpleDateFormat format = new SimpleDateFormat("MM月dd日");
backdate = format.format(date);
return backdate;
}
// 获取当前时间所在周的结束日期
public static String getLastDayOfWeek(Date date) {
String backdate = "";
Calendar c = new GregorianCalendar();
c.setFirstDayOfWeek(Calendar.MONDAY);
c.setTime(date);
c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek() + 6); // Sunday
date = c.getTime();
SimpleDateFormat format = new SimpleDateFormat("MM月dd日");
backdate = format.format(date);
return backdate;
}
// 获取当前时间所在年的最大周数
public static int getMaxWeekNumOfYear(int year) {
Calendar c = new GregorianCalendar();
c.set(year, Calendar.DECEMBER, 31, 23, 59, 59);
return getWeekOfYear(c.getTime());
}
// 获取当前时间所在年的周数
public static int getWeekOfYear(Date date) {
Calendar c = new GregorianCalendar();
c.setFirstDayOfWeek(Calendar.MONDAY);
c.setMinimalDaysInFirstWeek(7);
c.setTime(date);
return c.get(Calendar.WEEK_OF_YEAR);
}