wake-up-neo.com

Unix-Epoche-Zeit für das Java-Date-Objekt

Ich habe eine Zeichenfolge mit der UNIX-Epoche und muss sie in ein Java-Date-Objekt konvertieren.

String date = "1081157732";
DateFormat df = new SimpleDateFormat(""); // This line
try {
  Date expiry = df.parse(date);
 } catch (ParseException ex) {
  ex.getStackTrace();
}

Die markierte Linie ist, wo ich Probleme habe. Ich kann nicht herausfinden, was das Argument für SimpleDateFormat () sein sollte oder ob ich SimpleDateFormat () verwenden sollte.

66
Xenph Yan

Wie wäre es nur mit:

Date expiry = new Date(Long.parseLong(date));

BEARBEITEN: Laut Antwort von rde6173 und bei näherer Betrachtung der in der Frage angegebenen Eingabe erscheint "1081157732" als Sekundenwert für einen Epoch-Wert. Sie möchten also die Länge von parseLong () um 1000 in Millisekunden umzuwandeln, was der Date-Konstruktor von Java verwendet, also:

Date expiry = new Date(Long.parseLong(date) * 1000);
101
Marc Novakowski

Epoche ist die Anzahl von sekunden seit dem 1. Januar 1970 .. 

So:

String epochString = "1081157732";
long Epoch = Long.parseLong( epochString );
Date expiry = new Date( Epoch * 1000 );

Weitere Informationen: http://www.epochconverter.com/

35
Ryan Emerle

Java.time

Verwenden des Java.time - Frameworks, das in Java 8 und höher integriert ist.

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]

In diesem Fall sollten Sie ZonedDateTime besser als Datum in der UTC Zeitzone markieren, da Epoch in UTC in Unix-Zeit von Java verwendet wird.

ZoneOffset enthält eine praktische Konstante für die UTC-Zeitzone (siehe letzte Zeile). Seine Oberklasse ZoneId kann verwendet werden, um andere Zeitzonen anzupassen.

ZoneId zoneId = ZoneId.of( "America/Montreal" );
15
Przemek
long timestamp = Long.parseLong(date)
Date expiry = new Date(timestamp * 1000)
5
tcurdt

Besser noch, verwenden Sie JodaTime . Es ist viel einfacher, Strings und Strings zu analysieren. Ist auch Thread-sicher. Es lohnt sich die Zeit, die Sie benötigen, um es umzusetzen.

0
WolfmanDragon

Sekunden-Zeitstempel in Millisekunden-Zeitstempel konvertieren. Sie könnten die TimeUnit-API verwenden und ordentlich so.

long milliSecondTimeStamp = MILLISECONDS.convert(secondsTimeStamp, SECONDS)

0