264 votes

Java: Date à partir de timestamp unix

J'ai besoin de convertir un timestamp unix d'une date d'objet.
J'ai essayé ceci:

java.util.Date time = new java.util.Date(timeStamp);

Horodatage valeur est: 1280512800

La Date devrait être "2010/07/30 - 22:30:00" (comme je l'obtenir en PHP) mais à la place je reçois Thu Jan 15 23:11:56 IRST 1970.

Comment devrait-il être fait?

470voto

Pablo Santa Cruz Points 73944

Multiplier par 1000, depuis java est attendu millisecondes:

java.util.Date time=new java.util.Date((long)timeStamp*1000);

À partir de la documentation:

Alloue un objet Date et l'initialise à représenter le nombre de millisecondes spécifié depuis le standard de la base de temps est connu comme "le epoch", à savoir le 1er janvier 1970, 00:00:00 GMT.

79voto

micha Points 7756

java.le temps

Java 8 a introduit une nouvelle API pour travailler avec les dates et heures: le java.le temps de package.

Avec java.temps, vous pouvez utiliser:

Date date = Date.from( Instant.ofEpochSecond( timeStamp ) );

Un Instant représente un horodatage dans Java 8. Avec la statique Date.from() méthode, vous pouvez convertir un Instant d'un java.util.Date de l'instance.

45voto

Marco Fantasia Points 363

C'est la bonne façon:

Date date = new Date ();
date.setTime((long)unix_time*1000);

26voto

Stefan Points 151

Ressemble Calendrier est la nouvelle façon d'aller:

Calendar mydate = Calendar.getInstance();
mydate.setTimeInMillis(timestamp*1000);
out.println(mydate.get(Calendar.DAY_OF_MONTH)+"."+mydate.get(Calendar.MONTH)+"."+mydate.get(Calendar.YEAR));

La dernière ligne est juste un exemple de comment l'utiliser, ce serait d'imprimer par exemple "14.06.2012".

Si vous avez utilisé le Système.currentTimeMillis() pour enregistrer le Timestamp vous n'avez pas besoin de la "*1000".

Si vous avez l'horodatage dans une chaîne que vous avez besoin d'analyser d'abord comme un long: Long.parseLong(timestamp).

http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Calendar.html

14voto

f1sh Points 2242

Date du constructeur attend l'horodatage valeur en millisecondes. Multipliez vos timestamp de la valeur 1000, puis passe est pour le constructeur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X