you can simply compare both YEAR and WEEK_OF_YEAR....

解决方案 »

  1.   

    Calendar cal = Calendar.getInstance();
    Calendar calNow = Calendar.getInstance();
    cal.setTime(dateInst);
    int subYear = calNow.get(Calendar.YEAR) - cal.get(Calendar.YEAR);
    if (0 == subYear) {  if (0 = (cal.get(calNow.get(Calendar.WEEK_OF_YEAR) - cal.get(cal.get(Calendar.WEEK_OF_YEAR))) 
         return true;
    }
    else if (1 == subYear && (1 == calNow.get(Calendar.WEEK_OF_YEAR) && cal.get(Calendar.WEEK_OF_YEAR) == cal.getMaximum(Calendar.WEEK_OF_YEAR))) {
      if (1 != calNow.getFirstDayOfWeek())
        return true;
    }
    else if (-1 == subYear && (1 == cal.get(Calendar.WEEK_OF_YEAR) && calNow.get(Calendar.WEEK_OF_YEAR) == calNow.getMaximum(Calendar.WEEK_OF_YEAR))) {
      if (1 != cal.getFirstDayOfWeek())
        return true;
    }
    return false;//注意时区问题,美国以SUNDAY作为1周的第一天,而中国是MONDAY
      

  2.   

    上面回答有误,不好意思,下面是修改过的正确代码,经过测试了:boolean isSameWeekDates(Date date1, Date date2) {
    Calendar cal1 = Calendar.getInstance();
    Calendar cal2 = Calendar.getInstance();
    cal1.setTime(date1);
    cal2.setTime(date2);
    int subYear = cal1.get(Calendar.YEAR) - cal2.get(Calendar.YEAR);
    if (0 == subYear) {
      if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))
    return true;
    }
    else if (1 == subYear && 11 == cal2.get(Calendar.MONTH)) {
      // 如果12月的最后一周横跨来年第一周的话则最后一周即算做来年的第一周
      if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))
    return true;
    }
    else if (-1 == subYear && 11 == cal1.get(Calendar.MONTH)) {
      if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))
    return true;
    }
    return false;
    }
    //注意时区问题,美国以SUNDAY作为1周的第一天,而中国是MONDAY