tl; dr
Instant.parse("2014-10-23T00:35:14.800Z")
.toEpochMilli()
One-Liner In java.time
Der java.time Rahmen in Java 8 gebaut und später. Diese neuen Klassen ersetzen die alten Datums- und Uhrzeitklassen, die mit den frühesten Versionen von Java gebündelt sind, wie java.util.Date/.Calendar. Siehe Tutorial. Die java.time-Klassen ersetzen auch die sehr erfolgreiche Joda-Time-Bibliothek, die von einigen der gleichen Leute gebaut wird, einschließlich der von der gleichen Stephen Colbourne geführt wird.
Ein Instant
ist ein Moment auf der Timeline in UTC mit einer Auflösung von nanoseconds. Sie können ask it for a count of milliseconds von seinem epoch (erster Moment von 1970 in UTC). Aber denken Sie daran, dass ein Instant
zusätzliche Daten haben kann, wobei Nanosekunden feiner als Millisekunden sind. So können Sie Daten in diesem winzigen Bruchteil eines Bruchteils einer Sekunde verlieren.
Die java.time-Klassen verwenden Standard-ISO-8601-Formate beim Parsen/Erzeugen von Strings. Sie müssen kein Formatierungsmuster angeben. Die Instant
Klasse kann directly parse eine Zeichenfolge.
Instant.parse("2014-10-23T00:35:14.800Z")
Sie können, dass seit der Epoche der ersten Moment des Jahres 1970 in UTC, um eine Anzahl von Millisekunden zu konvertieren, indem toEpochMilli
Aufruf
bewusst sein, einen möglichen Datenverlust als Instant
Klasse kann ns halten. Wenn Sie also Millisekunden extrahieren, werden alle Mikrosekunden oder Nanosekunden in einer Bruchteilsekunde abgeschnitten. Ihre Beispielzeichenfolge hat nur drei Stellen in der Bruchteilsekunde, also nur Millisekunden. Aber sechs oder neun Ziffern des Dezimalbruches würden auf drei abgeschnitten werden, wenn sie in eine Anzahl von Millisekunden konvertiert werden.
long millisFromEpoch = Instant.parse("2014-10-23T00:35:14.800Z").toEpochMilli();
Um Zeit in Stunden-Minuten-Sekunden, verwenden Sie die Duration
Klasse erhalten abgelaufen ist. Feed seine between
Methode ein paar Momente in der Zeit.
Duration duration = Duration.between(Instant.parse("2014-10-23T00:35:14.800Z") , Instant.now());
One-Liner In Joda-Time
UPDATE: Das Joda-Time-Projekt ist im Wartungsmodus, mit dem Team der Migration in den java.time Klassen zu beraten.
Mit der Joda-Time 2.5 Bibliothek:
long millisSinceEpoch = new DateTime("2014-10-23T00:35:14.800Z").getMillis();
Joda-Time analysiert und generiert ISO 8601 Strings standardmäßig. Joda-Time funktioniert in Android. Die java.util.Date/.Calendar-Klassen sind bekanntermaßen mühsam, verwirrend und fehlerhaft. Vermeide sie.
Siehe [Joda Time] (http://joda-time.sourceforge.net/cal_iso.html). –
Wenn Sie Java 8 verwenden, finden Sie möglicherweise [diese Diskussion] (http://programmers.stackexchange.com/questions/225343/why-are-the-java-8-java-time-classes-missing-a-getmillis (Methode) interessant. –
Bitte lassen Sie mich wissen, warum Sie dies abgelehnt haben. – David