tl; dr
Для Android до 26 используйте библиотеку ThreeTen-ABP .
Избегайте устаревших классов даты и времени
Старые классы даты и времени, такие как Calendar
и Date
, являются ужасными , действительно, ужасно убогие классы.Они нагружены плохими дизайнерскими решениями и взломами, созданными людьми, которые не понимали обработку даты и времени.Избежать их.Они были полностью вытеснены java.time классами с принятием JSR 310 по причине - фактически, много причин.
Избегайте этих устаревших классов.Используйте только java.time классы.
ThreeTen-Backport библиотека
Для Java 6 и Java 7 большинство функций java.time перенесены в ThreeTen-Backport проект.
ThreeTen-ABP
Этот бэк-порт дополнительно адаптирован к более ранней версии Android (<26) в проекте <em>ThreeTen-ABP .
Я призываю вас добавить эту библиотеку в ваш проект, чтобы вы никогда не использовали трагические унаследованные классы.
Преобразование
Там, где вам нужно взаимодействовать со старым кодом, который еще не обновлен до java.time , конвертировать назад и вперед между устаревшим и современным.
В Java 8 и более поздних версиях выполните преобразование, вызвав новые методы to…
и from…
, найденные в старых классах.
В заднем порту выполните преобразование с использованием методов преобразования to…
, имеющихся в классе org.threeten.bp.DateTimeUtils
.
Истекшее время
Ваш вопрос говорит о подсчете прошедшего времени.
Для подсчета лет, месяцев и дней используйте Period
.
Для подсчета дней (24-часовой период времени, не связанный с календарем), часов, минут, секунд и доли секунды, используйте Duration
.
Поиск переполнения стека для получения дополнительной информации.Эти классы были покрыты уже много раз.
О 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 .