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
.
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éthodegetTime()
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)
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.
vous devez le convertir en millisecondes en multipliant l'horodatage par 1000:
java.util.Date dateTime=new java.util.Date((long)timeStamp*1000);