web-dev-qa-db-fra.com

Obtenir "unixtime" dans Java

Date.getTime () renvoie des millisecondes depuis le 1er janvier 1970. Unixtime est en secondes depuis le 1er janvier 1970. En général, je ne code pas en Java, mais je travaille sur des corrections de bugs. J'ai:

Date now = new Date();      
Long longTime = new Long(now.getTime()/1000);
return longTime.intValue();

Existe-t-il un meilleur moyen d'obtenir unixtime en java?

MISE À JOUR

Sur la suggestion de John M, je me suis retrouvé avec:

return (int) (System.currentTimeMillis() / 1000L);
244
Gary Richardson

Évitez la création d'objet Date avec w/ System.currentTimeMillis () . Une division par 1000 vous amène à Unix Epoch.

Comme indiqué dans un commentaire, vous souhaitez généralement un objet primitif long (minuscule-l long) et non un objet encadré long (majuscule-L long) pour le type de la variable unixTime.

long unixTime = System.currentTimeMillis() / 1000L;
450
John M

Java 8 a ajouté une nouvelle API pour travailler avec les dates et les heures. Avec Java 8, vous pouvez utiliser

import Java.time.Instant
...
long unixTimestamp = Instant.now().getEpochSecond();

Instant.now() renvoie un Instant qui représente l'heure système actuelle. Avec getEpochSecond(), vous obtenez les secondes d’époque (heure unix) de Instant.

252
micha