См. класс 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.
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
person
JodaStephen
schedule
20.09.2016