Использование java.time
Современный подход заключается в использовании классов java.time, которые вытесняют проблемные старые унаследованные классы даты и времени.
вычислить разницу в днях между датами (с компонентом времени 0)
Класс LocalDate
представляет значение только для даты без времени суток и без часового пояса.
Перечисление ChronoUnit
имеет несколько удобных методов, таких как between
.
При определении промежутков времени классы java.time используют подход Half-Open, где начало включительно , а окончание эксклюзив .
LocalDate start = LocalDate.of( 2017 , Month.JANUARY , 23 );
LocalDate stop = LocalDate.of( 2017 , Month.FEBRUARY , 17 );
long daysBetween = ChronoUnit.DAYS.between( start , stop );
Вы можете представить этот промежуток времени как объект, используя класс Period
.
Period p = Period.between( start , stop );
О java.time
Инфраструктура java.time встроена в Java 8 и более поздние версии. Эти классы заменяют проблемные старые устаревшие классы даты и времени, такие как java.util.Date
, Calendar
, & SimpleDateFormat
.
Проект Joda-Time , теперь в режиме обслуживания , рекомендует перейти на java.time классы.
Чтобы узнать больше, см. Oracle Tutorial . И поиск переполнения стека для многих примеров и объяснений. Спецификация JSR 310 .
Где взять классы java.time?
Проект ThreeTen-Extra расширяет java.time дополнительными классами. Этот проект является полигоном для возможных будущих дополнений к java.time. Здесь вы можете найти некоторые полезные классы, такие как Interval
, YearWeek
, YearQuarter
и more .