tl; др
ChronoUnit // An enum delineating granularities of time.
.DAYS // `DAYS` is one of the objects pre-defined on that enum.
.between( // Calculates elapsed time.
LocalDate.parse( "2015-10-26" ) , // `LocalDate` represents a date-only value, without time-of-day, without time zone.
LocalDate.parse( "2015-10-30" ) // `LocalDate` by default parses strings that comply with standard ISO 8601 formats.
) // Returns a `long`, the number of days elapsed. Uses Half-Open approach, where the beginning is *inclusive* while the ending is *exclusive*.
См. Этот код, запущенный на IdeOne.com .
4
Неверный класс
Класс java.util.Date
представляет момент в UTC, а не дату. Кроме того, этот ужасный класс был вытеснен несколько лет назад современными java.time классами.
LocalDate
Класс LocalDate
представляет значение только для даты без времени суток и без часовой пояс или смещение от UTC .
Ваши входы соответствуют ISO 8601, поэтому вы можете анализировать напрямую. Нет необходимости определять шаблон форматирования.
LocalDate start = LocalDate.parse( "2015-10-26" ) ;
Рассчитать прошедшее время, используя Period
.
Period p = Period.of( start , stop ) ;
Или запросить количество дней.
long days = ChronoUnit.DAYS.between( start , stop ) ;
О java.time
Фреймворк java.time встроен в Java 8 и более поздние версии. Эти классы вытесняют старые классные устаревшие классы даты и времени, такие как java.util.Date
, Calendar
и & SimpleDateFormat
.
Чтобы узнать больше, см. Oracle Tutorial . И поиск переполнения стека для многих примеров и объяснений. Спецификация: JSR 310 .
Проект Joda-Time , теперь в режиме обслуживания , рекомендует перейти на java.time классы.
Вы можете обмениваться java.time объектами напрямую с вашей базой данных. Используйте драйвер JDBC , совместимый с JDBC 4.2 или более поздней версии. Нет необходимости в строках, нет необходимости в java.sql.*
классах.
Где получить классы java.time?
ThreeTen-Extra Проект расширяет java.time дополнительными классами. Этот проект является полигоном для возможных будущих дополнений к java.time. Здесь вы можете найти несколько полезных классов, таких как Interval
, YearWeek
, YearQuarter
и more .