2016-09-19 5 views
0

Y at-il un soutien dans les java.time des classes, ou son extension ThreeTen-Extra, pour une week dates, plus précisément un an jour de la semaine, comme 2009-W53-7 qui est Dimanche 3 Janvier 2010.Année-Semaine-Jour dans java.time?

En ce qui concerne l'année semaines sans le jour de la semaine:

Mais comment représenter le jour de la semaine?

Répondre

1

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

+0

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. –

+0

Le jour de la semaine est simplement 'getDayOfWeek(). GetValue()'. – JodaStephen

+0

Voir [code en direct dans IdeOne.com] (http://ideone.com/7r0zeP). –