Ответ 1
TL;DR
LocalDate.of( 2011 , Month.JULY , 3 )
.minusWeeks( 1 )
2011-06-26
java.time
Вопрос и ответы используют старые устаревшие классы времени. Вместо этого используйте классы java.time.
LocalDate
Класс LocalDate
представляет значение даты только без времени и без часового пояса.
LocalDate localDate = LocalDate.of( 2011 , Month.JULY , 3 );
В качестве альтернативы, передайте целое число во втором аргументе вместо перечисления Month
. Пропустите 1-12 за январь-декабрь.
Предыдущая неделя
Вы можете вычесть неделю с даты.
LocalDate weekPrior = localDate.minusWeeks( 1 );
Смотрите этот запуск кода на IdeOne.com.
Предыдущий день недели
Если вам нужен определенный день недели, используйте TemporalAdjuster
.
Несколько таких удобных реализаций, предоставляемых в классе TemporalAdjusters
(обратите внимание на множественное число).
LocalDate priorTuesday = localDate.with( TemporalAdjusters.previous( DayOfWeek.TUESDAY ) ) ;
О java.time
Структура java.time встроена в Java 8 и более поздних версий. Эти классы вытесняют неприятный старый legacy классы даты-времени, такие как java.util.Date
, Calendar
и SimpleDateFormat
.
Проект Joda-Time, теперь режим обслуживания, советуем перейти к классам java.time.
Чтобы узнать больше, см. Учебник Oracle. И поиск Qaru для многих примеров и объяснений. Спецификация JSR 310.
Где получить классы java.time?
- Java SE 8, Java SE 9, а затем
- Встроенный.
- Часть стандартного Java API с объединенной реализацией.
- Java 9 добавляет некоторые незначительные функции и исправления.
- Java SE 6 и Java SE 7
- Большая часть функций java.time возвращается на Java 6 и 7 в ThreeTen-Backport.
- Android
- Проект ThreeTenABP адаптирует ThreeTen-Backport (упомянутый выше) специально для Android.
- См. Как использовать ThreeTenABP....
Проект ThreeTen-Extra расширяет java.time с помощью дополнительных классов. Этот проект является доказательством возможных будущих дополнений к java.time. Здесь вы можете найти полезные классы, такие как Interval
, YearWeek
, YearQuarter
и больше.