En résumé
Duration d = Duration.ofMillis( … ) ;
int minutes = d.toMinutesPart() ;
int seconds = d.toSecondsPart() ;
Java 9 et versions ultérieures
En Java 9 et plus, créez un Duration
et appeler le to…Part
méthodes. Dans ce cas : toMinutesPart
y toSecondsPart
.
Capturez le démarrage et l'arrêt de votre chronomètre.
Instant start = Instant.now();
…
Instant stop = Instant.now();
Représenter le temps écoulé dans un Duration
objet.
Duration d = Duration.between( start , stop );
Interrogez pour chaque partie, les minutes et les secondes.
int minutes = d.toMinutesPart();
int seconds = d.toSecondsPart();
Vous pouvez également vérifier si votre chronomètre a fonctionné plus longtemps que prévu.
Boolean ranTooLong = ( d.toDaysPart() > 0 ) || ( d.toHoursPart() > 0 ) ;
Java 8
En Java 8, le Duration
la classe manque to…Part
méthodes. Vous devrez faire des calculs comme indiqué dans les autres réponses.
long entireDurationAsSeconds = d.getSeconds();
Ou laissez Duration
Faites le calcul.
long minutesPart = d.toMinutes();
long secondsPart = d.minusMinutes( minutesPart ).getSeconds() ;
Véase code en direct dans IdeOne.com .
Interval: 2016-12-18T08:39:34.099Z/2016-12-18T08:41:49.099Z
d.toString() : PT2M15S
d.getSeconds() : 135
Temps écoulé : 2M 15S
Résolution
Pour info, la résolution de now
ont changé entre Java 8 et Java 9. Voir cette question .
-
Java 9 capture l'instant avec une résolution aussi fine que des nanosecondes. La résolution dépend de la capacité du matériel de votre ordinateur. Je vois des microsecondes (six chiffres de la fraction décimale) sur un MacBook Pro Retina avec macOS Sierra.
-
Java 8 ne capture l'instant que jusqu'à la milliseconde. L'implémentation de
Clock
est limitée à une résolution de millisecondes. Vous pouvez donc magasin en nanosecondes mais seulement capture en millisecondes.
À propos de java.time
Le site java.time est intégré à Java 8 et aux versions ultérieures. Ces classes remplacent les anciennes classes héritage les classes de date et d'heure telles que java.util.Date
, Calendar
, & SimpleDateFormat
.
Pour en savoir plus, consultez le Tutoriel Oracle . Et recherchez sur Stack Overflow de nombreux exemples et explications. La spécification est JSR 310 .
Le site Joda-Time Le projet, actuellement en mode de maintenance conseille de migrer vers le java.time classes.
Vous pouvez échanger java.time directement avec votre base de données. Utilisez un Pilote JDBC conforme à JDBC 4.2 ou plus tard. Pas besoin de ficelles, pas besoin de java.sql.*
classes.
Où obtenir les classes java.time ?