Simplemente ajustando el día de la semana no parece ser confiable. Considere el siguiente código simple:
Calendar calendar = Calendar.getInstance(Locale.GERMANY);
calendar.set(2011, Calendar.SEPTEMBER, 18);
System.out.printf("Starting day: %tF%n", calendar);
calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
System.out.printf("Last monday: %tF%n", calendar);
System.out.printf("First day of week: %d%n", calendar.getFirstDayOfWeek());
El resultado de ejecutar este programa es:
Starting day: 2011-09-18
Last monday: 2011-09-19
First day of week: 2
En otras palabras, se dio un paso adelante en el tiempo. Para una configuración regional alemana, esta no es realmente la respuesta esperada. Tenga en cuenta que el calendario utiliza correctamente el lunes como primer día de la semana (solo para calcular la semana del año, tal vez).
No entiendo dónde está el problema. Intenta volver a redactar la pregunta. – Xorty