К вашему сведению, проект Joda-Time теперь находится в режиме обслуживания , и команда рекомендует перейти на классы java.time .
Использование java.time
Класс LocalDate
является java.time сродни Joda-Time LocalDate
.Значение только для даты, без времени суток и без часового пояса.Одно из отличий состоит в том, что java.time не использует конструкторы для фабричных методов.
LocalDate start = LocalDate.of( 2011 , 11 , 8 );
LocalDate stop = LocalDate.of( 2012 , 5 , 1 );
Собираем понедельники.
List<LocalDate> mondays = new ArrayList<>();
Интерфейс TemporalAdjuster
предоставляет классы,манипулировать значениями даты и времени.Класс TemporalAdjusters
(обратите внимание на имя во множественном числе) предоставляет различные реализации.Нам нужны регуляторы nextOrSame
и next
, передавая требуемый объект перечисления DayOfWeek.MONDAY
.
LocalDate monday = start.with( TemporalAdjusters.nextOrSame( DayOfWeek.MONDAY ) );
while( monday.isBefore( stop ) ) {
mondays.add( monday );
// Set up the next loop.
monday = monday.plusWeeks( 1 );
}
ПоКстати, обычно мудрым подходом к обработке промежутка времени является Half-Open, где начало включительно , а окончание эксклюзивно .Таким образом, в приведенном выше коде мы запускаем, но не включаем, дату stop
.
О java.time
java.time фреймворк встроен в Java 8 и выше.Эти классы вытесняют старые классные устаревшие классы даты и времени, такие как java.util.Date
, Calendar
и & SimpleDateFormat
.
Проект Joda-Time , теперь в режиме обслуживания , рекомендует перейти на классы java.time .
Чтобы узнать больше, см. Oracle Tutorial .И поиск переполнения стека для многих примеров и объяснений.Спецификация: JSR 310 .
Где получить классы java.time?
- Java SE 8 и SE 9 и более поздних
- Встроенный,
- Часть стандартного Java API с встроенной реализацией.
- Java 9 добавляет некоторые незначительные функции и исправления.
- Java SE 6 и SE 7
- Android
Проект ThreeTen-Extra расширяет java.time дополнительными классами.Этот проект является полигоном для возможных будущих дополнений к java.time.Здесь вы можете найти некоторые полезные классы, такие как Interval
, YearWeek
, YearQuarter
и more .