Год-неделя-день в java.time?

Есть ли поддержка в java.time или его расширение ThreeTen-Extra для даты недели, в частности год-день-недели, например 2009-W53-7, который воскресенье, 3 января 2010 г..

Что касается года-недели без дня недели:

Но как представить день недели?


person Basil Bourque    schedule 19.09.2016    source источник


Ответы (1)


См. класс 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
comment
Спасибо, но я спрашивал о представлении дня недели недели года, 7 в 2009-W53-7. Если рассматривать в целом, это представляет собой дату одного дня. - person Basil Bourque; 20.09.2016
comment
День недели всего getDayOfWeek().getValue(). - person JodaStephen; 20.09.2016