2016-09-19 3 views
0

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

В течение года недели без день-недельного:

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

ответ

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

+0

Спасибо, но я спрашивал о представляющий день-в-неделю года недели, '' 7' в 2009-W53- 7'. Когда рассматривается в целом, это означает дату одного дня. –

+0

День недели - это просто 'getDayOfWeek(). GetValue()'. – JodaStephen

+0

См. [Live code in IdeOne.com] (http://ideone.com/7r0zeP). –

Смежные вопросы