Convertir Unix Time stamp en date en java [dupliquer]

cette question a déjà une réponse ici:

  • Unix époque de Java objet Date 7 réponses

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

I vous voulez convertir 1372339860 en 2013-06-27 13:31:00 GMT .

Edit : en Fait je veux qu'il soit selon NOUS timing GMT-4, de sorte qu'il sera 2013-06-27 09:31:00 .

45
demandé sur tcb 2013-07-02 22:07:11

3 réponses

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")); 
String formattedDate = sdf.format(date);
System.out.println(formattedDate);

le modèle que SimpleDateFormat prend Si très flexible, vous pouvez vérifier dans les javadocs toutes les variations que vous pouvez utiliser pour produire différents formatage basé sur les modèles que vous écrivez donné un Date spécifique . http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

  • parce que a Date fournit une méthode getTime() qui retourne les millisecondes depuis EPOC, il est nécessaire que vous donniez à SimpleDateFormat un fuseau horaire pour formater la date correctement en fonction de votre fuseau horaire, sinon il utilisera le fuseau horaire par défaut de la JVM (qui si bien configuré sera de toute façon droite)
128
répondu David Hofmann 2018-03-15 18:54:29

Java 8 introduit le Instant.ofEpochSecond "méthode utilitaire pour créer un Instant à partir D'un timestamp Unix, cela peut ensuite être converti en un ZonedDateTime et finalement formaté, par exemple:

final DateTimeFormatter formatter = 
    DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

final long unixTime = 1372339860;
final String 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 gens qui utilisent Java 8.

27
répondu Jonathan 2014-12-05 15:52:40

vous devez le convertir en millisecondes en multipliant l'horodatage par 1000:

java.util.Date dateTime=new java.util.Date((long)timeStamp*1000);
11
répondu andre.barata 2013-07-02 18:12:55