Ich habe eine Zeichenfolge, die die UNIX-Epochenzeit enthält , und ich muss sie in ein Java-Datumsobjekt 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, wie das Argument für SimpleDateFormat () lauten soll oder ob ich SimpleDateFormat () verwenden soll.
private String getDateString(long timeInMilliseconds) { SimpleDateFormat formatter = new SimpleDateFormat("EEE, d MMM yyyy 'at' HH:mm:ss z"); return formatter.format(timeInMilliseconds); }
Antworten:
Wie wäre es einfach:
BEARBEITEN : Gemäß der Antwort von rde6173 und bei näherer Betrachtung der in der Frage angegebenen Eingabe scheint "1081157732" ein sekundenbasierter Epochenwert zu sein. Sie möchten also die Länge von parseLong () mit 1000 multiplizieren, um sie zu konvertieren in Millisekunden, was der Date-Konstruktor von Java verwendet, also:
quelle
java.util.Date
,java.util.Calendar
undjava.text.SimpleDateFormat
sind jetzt Erbe , durch die verdrängte java.time Klassen in Java gebaut 8 und höher. Siehe Tutorial von Oracle .Epoche ist die Anzahl der Sekunden seit dem 1. Januar 1970.
So:
Für weitere Informationen: http://www.epochconverter.com/
quelle
java.time
Verwenden des
java.time
in Java 8 und höher integrierten Frameworks.In diesem Fall sollten Sie es besser
ZonedDateTime
als Datum in der UTC- Zeitzone markieren , da Epoche in UTC in der von Java verwendeten Unix-Zeit definiert ist .ZoneOffset
enthält eine praktische Konstante für die UTC-Zeitzone, wie in der letzten Zeile oben gezeigt. Die SuperklasseZoneId
kann zur Anpassung an andere Zeitzonen verwendet werden.quelle
LocalDateTime
und nur ein zu zeigenZonedDateTime
. In den meisten GeschäftsanwendungenZonedDateTime
ist dies der beste Weg. Menschen neigen dazu, sich in Schwierigkeiten / Verwirrung mit denLocalXXX
Typen zu bringen.quelle
Besser noch, verwenden Sie JodaTime . Es ist viel einfacher, Zeichenfolgen und in Zeichenfolgen zu analysieren. Ist auch fadensicher. Es lohnt sich, es zu implementieren.
quelle
Konvertieren des Sekundenzeitstempels in einen Millisekundenzeitstempel. Sie können die TimeUnit-API verwenden und so ordentlich.
long milliSecondTimeStamp = MILLISECONDS.convert(secondsTimeStamp, SECONDS)
quelle
Hum ... wenn ich mich nicht irre, ist die Zeit der UNIX-Epoche tatsächlich dieselbe wie
Also schreibe
sollte funktionieren (und das Parsen des Datums viel schneller sein)
quelle