Padrão de semana com base em semana do Java Time, analisando com DateTimeFormatter

Preciso imprimir a data atual no formatoweek-based-year-week-of-week-based-year, ou seja, usando oData da semana ISO onde a semana sempre começa na segunda-feira e a primeira semana do ano é a primeira que tem pelo menos quatro dias em janeiro (portanto, a semana com a primeira quinta-feira de janeiro).

Como 31 de dezembro de 2015 era uma quinta-feira, de sexta a domingo, ou seja, de 1 a 3 de janeiro de 2016, todos pertencem à 53ª semana de 2015 (um "ano longo") e a primeira semana de 2016 começa na segunda-feira, 4 de janeiro.

DeEspecificação DateTimeFormatter, Eu esperava que eu pudesse usar o padrãoYYYY-ww fazer isso (Y éweek-based-year ew éweek-of-week-based-year)

No entanto, quando tento algo como o seguinte caso de teste simplificado:

String dateString = "2016-01-03";
LocalDate date = LocalDate.parse(dateString, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
String expectedOutput = "2015-53";
String actualOutput = date.format(DateTimeFormatter.ofPattern("YYYY-ww"));
System.out.println("Parsing " + dateString + ", expected "
        + expectedOutput + " but got " + actualOutput);
System.out.println(dateString + " as ISO week date: "
        + date.format(DateTimeFormatter.ISO_WEEK_DATE));

Eu entendi isso:

Parsing 2016-01-03, expected 2015-53 but got 2016-02

2016-01-03 as ISO week date: 2015-W53-7

Então, usando o built-inISO_WEEK_DATE formatador faz o que eu esperava, mas usando o padrãoYYYY-ww parece me dar acalendário ano e semana.

Eu entendi algo errado sobre as datas da semana ISO, ou há um erro no meu código, ou ... ouso dizer ... isso é um bug nojava.time biblioteca (como foi o caso deessa questão)?

Sei que poderia resolver isso usando um formatador personalizado, como abaixo, mas no meu caso, realmente preciso que isso funcione usando um padrão.

new DateTimeFormatterBuilder()
    .parseCaseInsensitive()
    .appendValue(IsoFields.WEEK_BASED_YEAR, 4, 10, SignStyle.EXCEEDS_PAD)
    .appendLiteral("-")
    .appendValue(IsoFields.WEEK_OF_WEEK_BASED_YEAR, 2)
    .toFormatter();

questionAnswers(1)

yourAnswerToTheQuestion