年月日を知っていてこの日を計算するのは第x週です


/**
 *      2010-1-13,     bug,  2009-12-28 2010-01-02     2009  52 ,
 * 2010         2010-01-03.(        )
 * @param endDate
 * @return
 */
	public static String weekOfYear(String endDate) {

		String y = endDate.substring(0, 4);
		String m = endDate.substring(5, 7);
		String d = endDate.substring(8, endDate.length());
		int year = Integer.parseInt(y);
		int month = Integer.parseInt(m);
		int date = Integer.parseInt(d);
		String end = "";

		Calendar c = new GregorianCalendar(year, month - 1, date);
		c.setFirstDayOfWeek(Calendar.SUNDAY); //             

		c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);//        

		c.setMinimalDaysInFirstWeek(7);
		String firstWeekDay = getYearWeekFirstDay(year, 1);

		int weeks = 1;

		weeks = c.get(Calendar.WEEK_OF_YEAR);

		int ds = java.sql.Date.valueOf(endDate).compareTo(
				java.sql.Date.valueOf(firstWeekDay));
		end = c.get(Calendar.YEAR) + "-" + weeks;

		if (ds < 0 && month == 1) {
			end = year - 1 + "-" + weeks;
		}
		if (weeks < 10) {
			end = c.get(Calendar.YEAR) + "-0" + weeks;
		}

				return end;

	}

 
 
String firstWeekDay = getYearWeekFirstDay(year, 1);
int ds = java.sql.Date.valueOf(endDate).compareTo(java.sql.Date.valueOf(firstWeekDay));if (ds < 0 && month == 1) {end = year - 1 + "-"+ weeks;}
ここにこのような判断を加えて、もしこのいくつかの行が取り除けば、例えば:2010-01-02は09年の第52週であるべきで、ここは:2010-05-52
肝心な問題はどこがまだはっきりしていないことだ.ここはここのポイントをまとめたもので、このような「パッチ」方式で自分で正しいアルゴリズムを実現するしかなく、ネット上でも多くのこの問題の解答を見つけたが、今でも誰がはっきり言っているのか、week_を求めているのを見ていない.of_yearの場合、setMinimalDaysInFirstWeek()はどのように設定するか、どのように処理しますか??
c.get(Calendar.WEEK_OF_YEAR)を直接使うのは知っています.c.setFirstDayOfWeek(Calendar.SUNDaY)が設定されていることを含む.//毎週の初日を日曜日に設定して2010-01-02で測定しても、まだ問題があります.
実は、c.setMinimalDaysInFirstWeek(days);この年の最初の週は最低何日ありますか?最初は1~7を試したが、いずれも問題があった.