web-dev-qa-db-fra.com

Lequel est recommandé: Instant.NOW (). Toepochmilli () ou System.Currenttimemillis ()

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() _

7
Yishu Fang

Les deux vont bien. Et ni non plus recommandé sauf une minorité d'objectifs.

De quoi avez-vous besoin de millisecondes depuis l'époque?

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().

Si vous do besoin de millisecondes depuis l'époque

En supposant que vous avez de bonnes raisons de vouloir un nombre de millisecondes depuis l'époque, ...

lequel est recommandé: Instant.now().toEpochMilli() ou System.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.

Questions similaires

3
Ole V.V.