Calendar API を使用したアプローチの 1 つを次に示します。
private static final Calendar START_CAL = createAugust26th2012Cal();
public int getWeekNumber(Calendar someCal) {
    int theWeek = someCal.get(Calendar.WEEK_OF_YEAR);
    int weekCount = 0;
    while (theWeek != START_CAL.get(Calendar.WEEK_OF_YEAR)) {
        someCal.add(Calendar.WEEK_OF_YEAR, -1);
        theWeek = someCal.get(Calendar.WEEK_OF_YEAR);
        weekCount++;
    }
    return weekCount;
}
または、2 つのカレンダー間の差分 (ミリ秒単位) を取得し、その結果を 1 週間のミリ秒数で割ることもできます。
このアプローチを使用する場合は、TimeZones と夏時間を考慮することを忘れないでください。
DST を補正するためのコードがどのように見えるか正確には思い出せませんが、次のようなものだと思います:
 (オフセットを 2 つのオペランドに加算するか減算するかはよく覚えていません)
private static final long ONE_WEEK_MILLIS = 1000 * 60 * 60 * 24 * 7;
public int getWeeksBetween(Calendar calOne, Calendar calTwo) {
    long millisOne = calOne.getTime().getTime();
    long millisTwo = calTwo.getTime().getTime();
    long offsetOne = calOne.getTimeZone().getOffset(millisOne);
    long offsetTwo = calTwo.getTimeZone().getOffset(millisTwo);
    long diff = (millisTwo - offsetTwo) - (millisOne + offsetOne );
    return diff / ONE_WEEK_MILLIS;
}