Tl;dr
Vous demandez la fraction de seconde du temps actuel sous la forme d'un nombre de millisecondes ( no compte à partir de l'époque).
Instant.now() // Get current moment in UTC, then…
.get( ChronoField.MILLI_OF_SECOND ) // interrogate a `TemporalField`.
2017-04-25T03:01:14.113Z 113
- Obtenez la fraction de seconde en nanosecondes (milliards).
- Divisez par mille pour tronquer en millisecondes (milliers).
Voir ceci code exécuté en direct sur IdeOne.com .
Utilisation de java.time
La méthode moderne consiste à utiliser les classes java.time.
Capturez le moment présent en UTC.
Instant.now()
Utilisez le Instant.get
pour interroger la valeur d'un TemporalField
. Dans notre cas, le TemporalField
nous voulons ChronoField.MILLI_OF_SECOND
.
int millis = Instant.now().get( ChronoField.MILLI_OF_SECOND ) ; // Get current moment in UTC, then interrogate a `TemporalField`.
Ou faites le calcul vous-même.
Il est plus probable que vous posiez cette question pour un fuseau horaire spécifique. La fraction de seconde sera vraisemblablement la même qu'avec Instant
mais il y a tellement d'anomalies avec les fuseaux horaires que j'hésite à faire cette supposition.
ZonedDateTime zdt = ZonedDateTime.now( ZoneId.of( "America/Montreal" ) ) ;
Interroger pour la fraction de seconde. La question demandait millisecondes mais les classes java.time utilisent une résolution plus fine de l'expression nanosecondes . Cela signifie que le nombre de nanosecondes sera compris entre 0 et 999 999 999.
long nanosFractionOfSecond = zdt.getNano();
Si vous voulez vraiment des millisecondes, tronquez les données les plus fines en les divisant par un million. Par exemple, une demi-seconde est égale à 500 000 000 nanosecondes et aussi à 500 millisecondes.
long millis = ( nanosFractionOfSecond / 1_000_000L ) ; // Truncate nanoseconds to milliseconds, by a factor of one million.
À propos de java.time
El 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
.
El Joda-Time Le projet, actuellement en mode de maintenance conseille de migrer vers le java.time classes.
Pour en savoir plus, consultez le Tutoriel Oracle . Et recherchez sur Stack Overflow de nombreux exemples et explications. La spécification est JSR 310 .
Où obtenir les classes java.time ?
-
Java SE 8 y SE 9 et plus tard
- Intégré.
- Fait partie de l'API Java standard avec une mise en œuvre groupée.
- Java 9 ajoute quelques fonctionnalités et corrections mineures.
-
Java SE 6 y SE 7
- Une grande partie de la fonctionnalité java.time est rétroportée vers Java 6 & 7 dans Trois Dix-Backport .
-
Android
El Trois-Dix-Extra Le projet étend java.time avec des classes supplémentaires. Ce projet est un terrain d'essai pour d'éventuels ajouts futurs à java.time. Vous pouvez y trouver des classes utiles telles que Interval
, YearWeek
, YearQuarter
y plus .