Il seguente codice calcola il workweek di una data specifica.Un bug nella settimana dell'anno nel calendario Java?
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar cal = new GregorianCalendar();
cal.setTime(df.parse("2015-12-27 08:00:00"));
System.err.printf("%d.%02d\n", cal.getWeekYear(), cal.get(Calendar.WEEK_OF_YEAR));
Attualmente stampa 2016.01.
Come ho capito le specifiche del numero della settimana lavorativa, 2016.01 è la prima settimana con 4 giorni nel 2016, ma non c'è modo che il 27 dicembre possa appartenere a tale settimana.
C'è un modo per farlo in Java 7 che funzionerà per qualsiasi anno supponendo che le settimane iniziano il lunedì?
Le regole della settimana sono diverse in tutto il mondo, in che locale ci si trova? – nos
E cosa restituisce 'cal.getFirstDayOfWeek()' insieme a 'cal.getMinimalDaysInFirstWeek()'? –
@JonSkeet, era impostato su 1, avrei dovuto impostarlo su 4. – Evgeny