tl; dr
Я не могу помочь с сохранением значений в хранилище, так как я не использую Android.Но я могу показать, как записать текущий момент, а затем вычислить прошедшее время.
Записать текущий момент.
Instant.now().toString()
"2019-09-24T20:50:52.827365Z"
Parseэта строка и захватывает прошедшее время:
Duration // Represent a span-of-time not attached to the timeline.
.between( // Calculate time elapsed between a pair of moments.
Instant.parse( "2019-09-24T20:50:52.827365Z" ) , // Parse string in standard ISO 8601 format. The `Z` on the end means UTC, pronounced “Zulu”.
Instant.now() // Capture the current moment in UTC.
) // Returns a `Duration` object.
.toMillis() // Interrogates the `Duration` object for its total elapsed time in milliseconds, effectively truncating any microseconds/nanoseconds.
java.time
Современный подход к отслеживанию времени использует классы java.time , а именно:
Instant
для представления момента в UTC Duration
для представления промежутка времени, не привязанного к временной шкале, в основномколичество наносекунд.
Захват текущего момента в формате UTC.
Instant instant = Instant.now() ;
Сохранение текстового представления этого значения в стандартном формате ISO 8601 .
String output = instant.toString() ;
Считайте эту сохраненную строку и проанализируйте как Instant
.
String input = "2019-09-24T20:50:52.827365Z" ;
Instant then = Instant.parse( input ) ;
Захватить текущий момент и рассчитать прошедшее время как `Длительность.
Instant now = Instant.now() ;
Duration d = Duration.of( then , now ) ;
Если вы хотите, чтобы прошедшее время представляло собой общее количество миллисекунд, запросите Duration
объект.
long milliseconds = d.toMillis() ; // Total elapsed time in milliseconds, truncating any microseconds/nanoseconds.
О java.time
java.time *Платформа 1063 * встроена в 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?