2016-03-21 2 views

ответ

0

Поскольку 1 января была пятница. И в этом случае эта неделя считается последней неделей 2015 года, и первая неделя 2016 года начнется в первый понедельник (4 января).
Это осуществляется в соответствии с ISO 8601 стандартом:

Есть несколько взаимно эквивалентные и совместимые описаний недели 01:
- неделя с первым четвергом года в ней (формальное определении ISO),
- неделя с 4 января в нем,
- первая неделя с большинством (четыре или более) ее дней в начале года и
- неделя, начинающаяся с понедельника в период с 29 декабря по 4 января.

+0

Я согласен, что это должно считаться на прошлой неделе «2015», но не «2016»! – user1483445

+0

О, это. Ну, это отдельные данные. год IS 2016, не так ли? : D –

1

Что вы ищете является неделю на основе года (символ х), не год эры (символ у). См. Также pattern syntax used by Joda-Time, который отличается от SimpleDateFormat или Java-8. Таким образом, решение должно выглядеть так:

DateTimeFormatter f = DateTimeFormat.forPattern("xxxxww"); 
String s = f.print(new DateTime(2016, 1, 1, 1, 1).withZone(DateTimeZone.UTC)); 
System.out.println(s); // 201553