Convertir un horodatage unix à jour en Java

Comment puis-je convertir les minutes de l’horodatage unix en date et heure en Java? Par exemple, l’horodatage 1372339860 correspond au Thu, 27 Jun 2013 13:31:00 GMT .

Je veux convertir 1372339860 à 2013-06-27 13:31:00 GMT .

Edit: En fait, je veux que ce soit selon le calendrier américain GMT-4, donc ce sera 2013-06-27 09:31:00 .

Vous pouvez utiliser SimlpeDateFormat pour formater votre date comme ceci:

 long unixSeconds = 1372339860; // convert seconds to milliseconds Date date = new java.util.Date(unixSeconds*1000L); // the format of your date SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss z"); // give a timezone reference for formatting (see comment at the bottom) sdf.setTimeZone(java.util.TimeZone.getTimeZone("GMT-4")); Ssortingng formattedDate = sdf.format(date); System.out.println(formattedDate); 

Le modèle que prend SimpleDateFormat s’il est très flexible, vous pouvez vérifier dans les javadocs toutes les variantes que vous pouvez utiliser pour produire une mise en forme différente en fonction des modèles que vous écrivez en fonction d’une Date spécifique. http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

  • Étant donné qu’une Date fournit une méthode getTime() qui renvoie les millisecondes depuis EPOC, il est nécessaire que vous donniez à SimpleDateFormat un fuseau horaire pour formater correctement la date en fonction de votre fuseau horaire, sinon il utilisera le fuseau horaire par défaut de la JVM (si configuré sera de toute façon juste)

Java 8 introduit la méthode de l’utilitaire Instant.ofEpochSecond pour créer un Instant partir d’un horodatage Unix, qui peut ensuite être converti en un ZonedDateTime et enfin mis en forme, par exemple:

 final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); final long unixTime = 1372339860; final Ssortingng formattedDtm = Instant.ofEpochSecond(unixTime) .atZone(ZoneId.of("GMT-4")) .format(formatter); System.out.println(formattedDtm); // => '2013-06-27 09:31:00' 

J’ai pensé que cela pourrait être utile pour les utilisateurs de Java 8.

Vous devez le convertir en millisecondes en multipliant l’horodatage par 1000:

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