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.
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);
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/
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" );
long timestamp = Long.parseLong(date)
Date expiry = new Date(timestamp * 1000)
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.
Sekunden-Zeitstempel in Millisekunden-Zeitstempel konvertieren. Sie könnten die TimeUnit-API verwenden und ordentlich so.
long milliSecondTimeStamp = MILLISECONDS.convert(secondsTimeStamp, SECONDS)