/**
* 计算某年某周的开始日期
* @return 日期,格式为yyyy-MM-dd
*/
public static String getYearWeekFirstDay(int yearNo, int weekNo) {
Calendar cal = Calendar.getInstance();
cal.setFirstDayOfWeek(Calendar.SUNDAY); // 设置每周的第一天为星期一
cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);// 每周从周一开始
// 上面两句代码配合,才能实现,每年度的第一个周,是包含第一个星期一的那个周。
cal.setMinimalDaysInFirstWeek(7); // 设置每周最少为7天
cal.set(Calendar.YEAR, yearNo);
cal.set(Calendar.WEEK_OF_YEAR, weekNo);
// 分别取得当前日期的年、月、日
String firstDay = new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime());
String monthDay = new SimpleDateFormat("MM.dd").format(cal.getTime());
if(yearNo>Integer.parseInt(firstDay.split("-")[0])) {//第1周从1月1号开始
if(firstDay.split("-")[2].equals("25")) {
return "";
}else {
return "01.01";
}
}else {
return monthDay;
}
}
/**
* 计算某年某周的结束日期
* @return 日期,格式为yyyy-MM-dd
*/
public static String getYearWeekEndDay(int yearNo, int weekNo) {
Calendar cal = Calendar.getInstance();
cal.setFirstDayOfWeek(Calendar.SUNDAY); // 设置每周的第一天为星期一
cal.set(Calendar.DAY_OF_WEEK,Calendar.SATURDAY);// 每周从周一开始
// 上面两句代码配合,才能实现,每年度的第一个周,是包含第一个星期一的那个周。
cal.setMinimalDaysInFirstWeek(7); // 设置每周最少为7天
cal.set(Calendar.YEAR, yearNo);
cal.set(Calendar.WEEK_OF_YEAR, weekNo);
String endDay = new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime());
String monthDay = new SimpleDateFormat("MM.dd").format(cal.getTime());
if(yearNo!=Integer.parseInt(endDay.split("-")[0])) {
if(yearNo<Integer.parseInt(endDay.split("-")[0])) {
return "12.31";
}else {
return "";
}
}else {
return monthDay;
}
}
/**
* 计算某年某周的开始日期 跨年周
* @return 日期,格式为yyyy-MM-dd
*/
public static String getCrossYearWeekFirstDay(int yearNo, int weekNo) {
Calendar cal = Calendar.getInstance();
cal.setFirstDayOfWeek(Calendar.SUNDAY); // 设置每周的第一天为星期一
cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);// 每周从周一开始
// 上面两句代码配合,才能实现,每年度的第一个周,是包含第一个星期一的那个周。
cal.setMinimalDaysInFirstWeek(7); // 设置每周最少为7天
cal.set(Calendar.YEAR, yearNo);
cal.set(Calendar.WEEK_OF_YEAR, weekNo);
// 分别取得当前日期的年、月、日
String monthDay = new SimpleDateFormat("MM.dd").format(cal.getTime());
return monthDay;
}
/**
* 计算某年某周的结束日期 跨年周
* @return 日期,格式为yyyy-MM-dd
*/
public static String getCrossYearWeekEndDay(int yearNo, int weekNo) {
Calendar cal = Calendar.getInstance();
cal.setFirstDayOfWeek(Calendar.SUNDAY); // 设置每周的第一天为星期一
cal.set(Calendar.DAY_OF_WEEK,Calendar.SATURDAY);// 每周从周一开始
// 上面两句代码配合,才能实现,每年度的第一个周,是包含第一个星期一的那个周。
cal.setMinimalDaysInFirstWeek(7); // 设置每周最少为7天
cal.set(Calendar.YEAR, yearNo);
cal.set(Calendar.WEEK_OF_YEAR, weekNo);
String monthDay = new SimpleDateFormat("MM.dd").format(cal.getTime());
return monthDay;
}
//获取 某日是某年的第几周
public static int getWeekByDay(String day) throws ParseException {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
calendar.setFirstDayOfWeek(Calendar.SUNDAY);
calendar.setTime(format.parse(day));
return calendar.get(Calendar.WEEK_OF_YEAR);
}
周的开始和结束时间
最新推荐文章于 2021-05-06 14:34:09 发布