web-dev-qa-db-fra.com

Comment obtenir l'heure système dans Java sans créer de nouvelle date

Je dois obtenir la date du système et Java fournit la new Date().getTime()].

Mais je dois éviter une nouvelle allocation d'objets (je travaille sur un système embarqué). Comment obtenir l'heure système sans allouer un nouvel objet Date?

38
michelemarcon

Comme jzd dit, vous pouvez utiliser System.currentTimeMillis. Si vous en avez besoin in un objet Date mais que vous ne voulez pas créer un objet nouveaDate, vous pouvez utiliser Date.setTime pour réutiliser un objet Date existant. Personnellement, je déteste le fait que Date soit mutable, mais peut-être cela vous est utile dans ce cas particulier. De même, Calendar a une méthode setTimeInMillis.

Si possible, cependant, il serait probablement préférable de le garder comme un long. Si vous n’avez besoin que d’un horodatage, c’est la meilleure approche.

59
Jon Skeet

Cela devrait fonctionner:

System.currentTimeMillis();
49
jzd

Vous pouvez utiliser System.currentTimeMillis() .

Au moins dans OpenJDK, Date utilise ceci sous les couvertures.

L'appel entrant System est destiné à une méthode JVM native, nous ne pouvons donc pas affirmer avec certitude qu'aucune allocation n'est effectuée sous les couvertures, bien que cela semble improbable ici.

11
Mark Elliot

Utilisez System.currentTimeMillis () ou System.nanoTime ().

7
Aravind R. Yarram