tl; dr
Duration d = Duration.ofMillis( … ) ;
int minutes = d.toMinutesPart() ;
int seconds = d.toSecondsPart() ;
Java 9 и новее
В Java 9 и более поздних версиях создайте Duration
и вызовите to…Part
методы. В этом случае: toMinutesPart
и toSecondsPart
.
Захватите начало и остановку секундомера.
Instant start = Instant.now();
…
Instant stop = Instant.now();
Представляют прошедшее время в Duration
объекте.
Duration d = Duration.between( start , stop );
Опросите каждую часть, минуты и секунды.
int minutes = d.toMinutesPart();
int seconds = d.toSecondsPart();
Вы также можете захотеть увидеть, как долго ваш секундомер работает.
Boolean ranTooLong = ( d.toDaysPart() > 0 ) || ( d.toHoursPart() > 0 ) ;
Java 8
В Java 8 в Duration
классе отсутствуют to…Part
методы. Вам нужно будет выполнить математику, как показано в других ответах.
long entireDurationAsSeconds = d.getSeconds();
Или позвольте Duration
сделать математику.
long minutesPart = d.toMinutes();
long secondsPart = d.minusMinutes( minutesPart ).getSeconds() ;
Смотрите живой код на IdeOne.com .
Интервал: 2016-12-18T08: 39: 34.099Z / 2016-12-18T08: 41: 49.099Z
d.toString (): PT2M15S
d.getSeconds (): 135
Прошло: 2M 15S
разрешение
FYI, разрешение now
методов изменилось между Java 8 и Java 9. См. Этот вопрос .
- Java 9 улавливает момент с разрешением до наносекунд. Разрешение зависит от возможностей оборудования вашего компьютера. Я вижу микросекунды (шесть цифр десятичной дроби) на MacBook Pro Retina с macOS Sierra.
- Java 8 улавливает момент только с точностью до миллисекунд. Реализация
Clock
ограничена разрешением в миллисекунды. Таким образом, вы можете хранить значения в наносекундах, но фиксировать их только за миллисекунды.
О java.time
Java.time каркас встроен в Java 8 и более поздних версий. Эти классы вытеснять неприятные старые устаревшие классы даты и времени , такие как java.util.Date
, Calendar
, и SimpleDateFormat
.
Чтобы узнать больше, см. Oracle Tutorial . И поищите в Stack Overflow множество примеров и объяснений. Спецификация - JSR 310 .
Проект Joda-Time , находящийся сейчас в режиме обслуживания , рекомендует перейти на классы java.time .
Вы можете обмениваться объектами java.time напрямую с вашей базой данных. Используйте драйвер JDBC, совместимый с JDBC 4.2 или новее. Нет необходимости в строках, нет необходимости в java.sql.*
занятиях.
Где взять классы java.time?