/** * 获取当前日期所在周的星期一和下周的星期一的日期 * @param date * @return */ public static Date[] getWeekFirstDay(Date date) { Date[] dates = new Date[2]; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); //设置时间格式 Calendar cal = Calendar.getInstance(); Date time = null; try { time = sdf.parse(DateUtil.simpleFormat(date)); } catch (ParseException e) { e.printStackTrace(); } cal.setTime(time); logger.info("要计算日期为:" + sdf.format(cal.getTime())); //输出要计算日期 //判断要计算的日期是否是周日,如果是则减一天计算周六的,否则会出问题,计算到下一周去了 int dayWeek = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天 if (1 == dayWeek) { cal.add(Calendar.DAY_OF_MONTH, -1); } cal.setFirstDayOfWeek(Calendar.MONDAY);//设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一 int day = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天 cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);//根据日历的规则,给当前日期减去星期几与一个星期第一天的差值 logger.info("所在周星期一的日期{}", DateUtil.simpleFormat(cal.getTime())); dates[0] = cal.getTime(); // logger.info(cal.getFirstDayOfWeek() + "-" + day + "+6=" + (cal.getFirstDayOfWeek() - day + 6)); cal.add(Calendar.DATE, 7); logger.info("所在周下周星期一的日期{}", DateUtil.simpleFormat(cal.getTime())); dates[1] = cal.getTime(); return dates; }
转载于:https://my.oschina.net/u/1047398/blog/909404