tl; д-р
Duration d = Duration.ofMillis( … ) ;
int minutes = d.toMinutesPart() ;
int seconds = d.toSecondsPart() ;
Java 9 і пізніших версій
У Java 9 та пізніших версіях створіть a 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
Минуло: 2М 15С
Дозвіл
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 . І шукайте в Stack Overflow багато прикладів та пояснень. Специфікація - JSR 310 .
Проект Joda-Time , який зараз перебуває в режимі обслуговування , радить перейти на класи java.time .
Ви можете обмінювати об'єкти java.time безпосередньо з базою даних. Використовуйте драйвер JDBC, сумісний з JDBC 4.2 або новішою. Не потрібні рядки, не потрібні java.sql.*
класи.
Де отримати класи java.time?