【Java】根据年和第几周,获取该周第一天和最后一天
默认方法:【此方法得到的第一周,可能会跨年,因为每年的第一天,不一定是刚好星期一,最后一周也有可能跨到下一年】
/** * 获取指定周的第一天 * * @param year * @param week * @return */ public static Date getFirstDayOfWeek(int year, int week) { Calendar cal = Calendar.getInstance(); // 设置年份 cal.set(Calendar.YEAR, year); // 设置周 cal.set(Calendar.WEEK_OF_YEAR, week); // 设置该周第一天为星期一 cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); cal.set(Calendar.HOUR_OF_DAY, 0); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.SECOND, 0); return cal.getTime(); } /** * 获取指定周的最后一天 * * @param year * @param week * @return */ public static Date getLastDayOfWeek(int year, int week) { Calendar cal = Calendar.getInstance(); // 设置年份 cal.set(Calendar.YEAR, year); // 设置周 cal.set(Calendar.WEEK_OF_YEAR, week); // 设置该周第一天为星期一 cal.setFirstDayOfWeek(Calendar.MONDAY); // 设置最后一天是星期日 cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek() + 5); // Sunday cal.set(Calendar.HOUR_OF_DAY, 23); cal.set(Calendar.MINUTE, 59); cal.set(Calendar.SECOND, 59); return cal.getTime(); }
改良方法:【限定第一周的第一天是 当年的1月1日, 最后一周的最后一天是 当年的12月31日】
//region 获取指定周的第一天 及 指定周的 最后一天 /** * 获取指定周的第一天 * * @param year * @param week * @return */ public static Date getFirstDayOfWeek(int year, int week) { if(week > 1) { Calendar cal = Calendar.getInstance(); // 设置年份 cal.set(Calendar.YEAR, year); // 设置周 cal.set(Calendar.WEEK_OF_YEAR, week); // 设置该周第一天为星期一 cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); cal.set(Calendar.HOUR_OF_DAY, 0); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.SECOND, 0); return cal.getTime(); } else { Calendar cal = Calendar.getInstance(); cal.set(year,0,1); return cal.getTime(); } } /** * 获取指定周的最后一天 * * @param year * @param week * @return */ public static Date getLastDayOfWeek(int year, int week) { if(week * 7 >= 365){ // 说明是年的最后一天 Calendar cal = Calendar.getInstance(); cal.set(year,11,31); return cal.getTime(); }else{ Calendar cal = Calendar.getInstance(); // 设置年份 cal.set(Calendar.YEAR, year); // 设置周 cal.set(Calendar.WEEK_OF_YEAR, week); // 设置该周第一天为星期一 cal.setFirstDayOfWeek(Calendar.MONDAY); // 设置最后一天是星期日 cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek() + 6); // Sunday cal.set(Calendar.HOUR_OF_DAY, 23); cal.set(Calendar.MINUTE, 59); cal.set(Calendar.SECOND, 59); return cal.getTime(); } } //endregion
参考自:https://blog.csdn.net/liaomingwu/article/details/122495065

浙公网安备 33010602011771号