Hai un oggetto YearMonth
. Per ogni giorno del mese, è possibile chiamare atDay(dayOfMonth)
per restituire un LocalDate
in quel giorno specifico del mese. Con questo LocalDate
, quindi è possibile chiamare:
Come tale, si dovrebbe cambiare la vostra lista Dayes
di tenere LocalDate
s invece di Integer
s, e quindi si può avere, per esempio:
YearMonth yearMonthObject = YearMonth.of(year, month);
int daysOfCurrentMonth = yearMonthObject.lengthOfMonth();
ArrayList<LocalDate> dayes = new ArrayList<LocalDate>();
for(int i = 1; i <= daysOfCurrentMonth; i++){
dayes.add(yearMonthObject.atDay(i));
}
dayes.forEach(value -> System.out.println(value.getDayOfMonth() + " " + value.getDayOfWeek()));
Ciò stamperà ogni giorno del mese seguito da il giorno corrispondente della settimana.
Come nota a margine, è possibile ottenere un valore di visualizzazione reale per il giorno della settimana (anziché lo name()
dell'enumerazione precedente) chiamando lo getDisplayName(style, locale)
. Lo stile rappresenta come scrivere i giorni (forma lunga, forma breve ...) e le impostazioni internazionali sono le impostazioni internazionali da utilizzare per il nome visualizzato. Un esempio potrebbe essere:
value.getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.ENGLISH)
che restituirebbe in inglese il testo completo del giorno della settimana. Esempio di output per 04/2016 con il cambiamento di cui sopra:
1 Friday
2 Saturday
3 Sunday
4 Monday
5 Tuesday
La tua risposta è stata così dettagliata e la soluzione molto semplice. Grazie – dios231