См. Класс IsoFields, который позволяет запрашивать недельный год и неделю недели по неделям. Существует также специальный форматировщик ISO_WEEK_DATE.
В номере DayOfWeek
перечислены номера дня недели, 1-7, с понедельника по воскресенье. Позвоните по телефону LocalDate::getDayOfWeek
, а затем 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();
Используйте эти детали для создания строк в стандартном ISO 8601 week date formats.
String yearWeek = yearOfWeekBasedYear + "-W" + String.format("%02d", weekOfWeekBasedYear) ;
2016-W49
String yearWeekDay = yearWeek + "-" + dayOfWeek ;
2016-W49-3
Или пусть предопределенный DateTimeFormatter.ISO_WEEK_DATE
сделать работу.
String ywd = ld.format(DateTimeFormatter.ISO_WEEK_DATE);
2016-W49-3
То же верстальщик может разобрать такие стандартные строки.
String input = "2016-W49-3" ;
LocalDate ldParsed = LocalDate.parse(input , DateTimeFormatter.ISO_WEEK_DATE) ;
2016-12-07
Спасибо, но я спрашивал о представляющий день-в-неделю года недели, '' 7' в 2009-W53- 7'. Когда рассматривается в целом, это означает дату одного дня. –
День недели - это просто 'getDayOfWeek(). GetValue()'. – JodaStephen
См. [Live code in IdeOne.com] (http://ideone.com/7r0zeP). –