web-dev-qa-db-fra.com

Convertir l’horodatage Unix en date en java

Comment puis-je convertir des minutes d'un horodatage Unix en date et heure en Java. Par exemple, horodatage 1372339860 correspondre à 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.

57
bigData

Vous pouvez utiliser SimlpeDateFormat pour formater votre date de la manière suivante:

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 archiver dans le javadocs toutes les variations que vous pouvez utiliser pour produire une mise en forme différente en fonction des modèles que vous écrivez pour un Date spécifique. http://docs.Oracle.com/javase/7/docs/api/Java/text/SimpleDateFormat.html

  • Étant donné que Date fournit une méthode getTime() qui renvoie les millisecondes depuis EPOC, il est nécessaire de donner à 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 machine virtuelle Java (qui, s'il est bien configuré, sera correct).
142
David Hofmann

Java 8 introduit le Instant.ofEpochSecond méthode d’utilité pour créer un Instant à partir d’un horodatage Unix, elle peut ensuite être convertie en ZonedDateTime et enfin 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'

Je pensais que cela pourrait être utile aux personnes qui utilisent Java 8.

31
Jonathan

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

Java.util.Date dateTime=new Java.util.Date((long)timeStamp*1000);
12
andre.barata