Voir la classe IsoFields, qui permet d'interroger l'année et la semaine de la semaine en fonction de la semaine. Il y a aussi un formateur dédié ISO_WEEK_DATE.
Enum vous indique le numéro du jour de la semaine, 1-7 du lundi au dimanche. Appelez LocalDate::getDayOfWeek
puis DayOfWeek::getValue
.
LocalDate ld = LocalDate.now(ZoneId.of("America/Montreal")) ;
2016-12-07
int weekOfWeekBasedYear = ld.get(IsoFields.WEEK_OF_WEEK_BASED_YEAR) ;
int yearOfWeekBasedYear = ld.get(IsoFields.WEEK_BASED_YEAR) ;
int dayOfWeek = ld.getDayOfWeek().getValue();
Utilisez ces pièces pour construire des chaînes dans la ISO 8601 week date formats standard.
String yearWeek = yearOfWeekBasedYear + "-W" + String.format("%02d", weekOfWeekBasedYear) ;
2016-W49
String yearWeekDay = yearWeek + "-" + dayOfWeek ;
2016-W49-3
Ou, laissez-le DateTimeFormatter.ISO_WEEK_DATE
prédéfini faire le travail.
String ywd = ld.format(DateTimeFormatter.ISO_WEEK_DATE);
2016-W49-3
Cette même formatter peut analyser ces chaînes standard.
String input = "2016-W49-3" ;
LocalDate ldParsed = LocalDate.parse(input , DateTimeFormatter.ISO_WEEK_DATE) ;
2016-12-07
Merci, mais je me demande de représenter le jour de-la-semaine de l'année semaines, le '' 7' en 2009-W53- 7'. Lorsque considéré ensemble, cela représente la date d'un seul jour. –
Le jour de la semaine est simplement 'getDayOfWeek(). GetValue()'. – JodaStephen
Voir [code en direct dans IdeOne.com] (http://ideone.com/7r0zeP). –