En Java, nous pouvons avoir de nombreuses façons différentes d'obtenir l'horodatage actuel, mais lequel est recommandé: Instant.now().toEpochMilli()
ou System.currentTimeMillis()
_
Les deux vont bien. Et ni non plus recommandé sauf une minorité d'objectifs.
En Java, nous pouvons avoir de nombreuses façons différentes d'obtenir l'horodatage actuel,
Pour l'horodatage actuel, utilisez simplement Instant.now()
. Pas besoin de convertir en millisecondes.
De nombreuses méthodes à partir des premières années de Java, également nombreuses dans la bibliothèque standard, ont pris un long
nombre de millisecondes depuis l'époque comme argument. Cependant, aujourd'hui, je considérerais ce démodé. Voyez si vous pouvez trouver - ou créer une méthode moderne - ou une méthode moderne qui prend par exemple un Instant
comme argument à la place. Allez orienté objet et n'utilisez pas une primitive long
. Il rendra votre code plus clair et plus explicatif.
Comme l'a dit Eliott Frisch dans un commentaire, s'il s'agit de mesurer le temps écoulé, vous préférez peut-être préférer la résolution supérieure de System.nanoTime()
.
En supposant que vous avez de bonnes raisons de vouloir un nombre de millisecondes depuis l'époque, ...
lequel est recommandé:
Instant.now().toEpochMilli()
ouSystem.currentTimeMillis()
[?]
Les opinions diffèrent. Certains diront que vous devriez utiliser Java.Time, l'API de date et de l'heure moderne, pour toutes vos tâches de date et d'heure. Cela impliquerait Instant
ici. Ung java.time est généralement une bonne habitude depuis les classes de date et d'heure de Java 1.0 et 1.1 (Date
, Calendar
, TimeZone
, DateFormat
, SimpleDateFormat
et autres) sont mal conçus et maintenant longtemps obsolètes, certainement pas que nous ne devrions plus utiliser. D'autre part, je ne suis pas au courant d'un problème de conception avec System.curremtTimeMillis()
En particulier (à l'exception de ce que j'ai mentionné ci-dessus sur l'utilisation d'un long
nombre de millisecondes du tout, ce qui est évidemment intrinsèque à la fois Instant.now().toEpochMilli()
et System.currentTimeMillis()
).
S'il y a une légère différence de performance entre les deux, j'ai du mal à imaginer la situation où cela importera.
Prenez l'option que vous trouvez plus lisible et moins surprenante dans votre contexte.