J'ai une chaîne contenant le UNIX Epoch time , et j'ai besoin de la convertir en objet Date Java.
String date = "1081157732";
DateFormat df = new SimpleDateFormat(""); // This line
try {
Date expiry = df.parse(date);
} catch (ParseException ex) {
ex.getStackTrace();
}
La ligne marquée est l'endroit où j'ai des problèmes. Je ne peux pas déterminer quel devrait être l'argument de SimpleDateFormat () ni même si je devrais utiliser SimpleDateFormat ().
Que diriez-vous juste:
Date expiry = new Date(Long.parseLong(date));
EDIT: selon la réponse de rde6173 et en regardant de plus près l’entrée spécifiée dans la question, "1081157732" semble être une valeur d’époque basée sur les secondes et vous voudrez donc multiplier le long de parseLong (). par 1000 pour convertir en millisecondes, ce que le constructeur Date de Java utilise, donc:
Date expiry = new Date(Long.parseLong(date) * 1000);
Epoch est le nombre de secondes depuis le 1er janvier 1970 ..
Alors:
String epochString = "1081157732";
long Epoch = Long.parseLong( epochString );
Date expiry = new Date( Epoch * 1000 );
Pour plus d'informations: http://www.epochconverter.com/
Utilisation de Java.time
framework intégré à Java 8 et versions ultérieures.
import Java.time.LocalDateTime;
import Java.time.Instant;
import Java.time.ZoneId;
long Epoch = Long.parseLong("1081157732");
Instant instant = Instant.ofEpochSecond(Epoch);
ZonedDateTime.ofInstant(instant, ZoneOffset.UTC); # ZonedDateTime = 2004-04-05T09:35:32Z[UTC]
Dans ce cas, mieux vaut utiliser ZonedDateTime
pour le marquer comme date dans UTC fuseau horaire car Epoch est défini en UTC dans heure Unix utilisé par Java.
ZoneOffset
contient une constante pratique pour le fuseau horaire UTC, comme indiqué à la dernière ligne ci-dessus. Sa super-classe, ZoneId
peut être utilisée pour s’ajuster à d’autres fuseaux horaires.
ZoneId zoneId = ZoneId.of( "America/Montreal" );
long timestamp = Long.parseLong(date)
Date expiry = new Date(timestamp * 1000)
Mieux encore, utilisez JodaTime . Beaucoup plus facile à analyser les chaînes et dans les chaînes. Le fil est-il également sécurisé? Cela vaut le temps qu'il vous faudra pour le mettre en œuvre.