С Йода
new DateTime().weekOfWeekyear().toInterval().contains(millis);
Вы можете проверить, правильно ли он выбирает всю неделю, выполнив что-то вроде
System.out.println(new DateMidnight(2011, 12, 31).weekOfWeekyear().toInterval());
Какие отпечатки 2011-12-26T00:00:00.000/2012-01-02T00:00:00.000
. Показывает, что он правильно нашел неделю, которая пересекает границу года. Обратите внимание, что Joda по умолчанию считает воскресенье первым днем недели. Не уверен, что вы можете изменить это на понедельник, если это то, что вам нужно.
Так как объекты Joda являются неизменяемыми (есть только несколько случаев, которых нет), они, как правило, очень недолговечны и в приведенном выше коде практически нет перегрузок производительности, поскольку GC по умолчанию очень эффективен при работе с недолговечными объекты. Но то, что вы получаете, это огромный бонус на удобочитаемость.