2016-09-19 113 views

回答

1

請參見IsoFields類,該類允許查詢以周爲基礎的年份和以周爲基礎的年的周。還有一個專用格式化器ISO_WEEK_DATE

DayOfWeek枚舉告訴你星期一至星期日1-7的星期幾數。致電LocalDate::getDayOfWeek,然後DayOfWeek::getValue

LocalDate ld = LocalDate.now(ZoneId.of("America/Montreal")) ; 

2016年12月7日

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

+0

謝謝,但我是問代表一天的最週上年周,'7'在'2009年W53- 7'。當完全考慮時,這表示單日的日期。 –

+0

星期幾只是'getDayOfWeek()。getValue()'。 – JodaStephen

+0

請參閱[IdeOne.com上的實時代碼](http://ideone.com/7r0zeP)。 –