tl; dr
Duration d = Duration.ofMillis( … ) ;
int minutes = d.toMinutesPart() ;
int seconds = d.toSecondsPart() ;
Java 9 i nowsze
W Javie 9 i nowszych utwórz a Duration
i wywołaj to…Part
metody. W tym przypadku: toMinutesPart
i toSecondsPart
.
Uchwyć początek i koniec stopera.
Instant start = Instant.now();
…
Instant stop = Instant.now();
Przedstawia upływający czas w Duration
obiekcie.
Duration d = Duration.between( start , stop );
Zapytaj o każdą część, minuty i sekundy.
int minutes = d.toMinutesPart();
int seconds = d.toSecondsPart();
Możesz także chcieć sprawdzić, czy stoper działał zgodnie z oczekiwaniami.
Boolean ranTooLong = ( d.toDaysPart() > 0 ) || ( d.toHoursPart() > 0 ) ;
Java 8
W Javie 8 tej Duration
klasie brakuje to…Part
metod. Będziesz musiał wykonać obliczenia matematyczne, jak pokazano w innych odpowiedziach.
long entireDurationAsSeconds = d.getSeconds();
Albo zróbmy Duration
matematykę.
long minutesPart = d.toMinutes();
long secondsPart = d.minusMinutes( minutesPart ).getSeconds() ;
Zobacz kod na żywo w IdeOne.com .
Interwał: 2016-12-18T08: 39: 34.099Z / 2016-12-18T08: 41: 49.099Z
d.toString (): PT2M15S
d.getSeconds (): 135
Upłynęło: 2 M 15 S.
Rozkład
FYI, rozdzielczość now
metod zmieniona między Java 8 i Java 9. Zobacz to pytanie .
- Java 9 rejestruje moment z rozdzielczością rzędu nanosekund. Rozdzielczość zależy od możliwości sprzętu komputera. Widzę mikrosekundy (sześć cyfr dziesiętnych) na MacBooku Pro Retina z macOS Sierra.
- Java 8 rejestruje moment tylko do milisekund. Implementacja
Clock
jest ograniczona do rozdzielczości milisekund. Możesz więc przechowywać wartości w nanosekundach, ale przechwytywać je tylko w milisekundach.
Informacje o java.time
Struktura java.time jest wbudowana w Javę 8 i nowsze. Klasy te kłopotliwe zastąpić stary starszych klas Date-Time, takich jak java.util.Date
, Calendar
, i SimpleDateFormat
.
Aby dowiedzieć się więcej, zobacz samouczek Oracle . I przeszukaj Stack Overflow, aby znaleźć wiele przykładów i wyjaśnień. Specyfikacja to JSR 310 .
Projekt Joda-Time , obecnie w trybie konserwacji , zaleca migrację do klas java.time .
Możesz wymieniać obiekty java.time bezpośrednio ze swoją bazą danych. Użyj sterownika JDBC zgodnego z JDBC 4.2 lub nowszym. Nie ma potrzeby stosowania ciągów ani java.sql.*
klas.
Skąd wziąć klasy java.time?