Wie erhalte ich Millisekunden aus der Epoche (1970-01-01) in Java?


78

Ich muss die Anzahl der Millisekunden von 1970-01-01 UTC bis jetzt UTC in Java ermitteln.

Ich möchte auch in der Lage sein, die Anzahl der Millisekunden von 1970-01-01 UTC auf eine andere UTC-Datumszeit zu übertragen.



1
es zeigt keinen Forschungsaufwand.
Lordo

1
@PaulG - Der Hauptgrund für die Ablehnung ist der Forschungsaufwand . Die Frage wird von einem einfachen Google gelöst.
Brian Roach

Antworten:


162

Wie wäre es mit System.currentTimeMillis()?

Aus dem JavaDoc:

Rückgabe: Die Differenz, gemessen in Millisekunden, zwischen der aktuellen Zeit und Mitternacht, dem 1. Januar 1970 UTC

Java 8 führt das java.timeFramework ein, insbesondere die InstantKlasse, die " ... einen ... Punkt auf der Zeitachse modelliert ... ":

long now = Instant.now().toEpochMilli();

Rückgabe: Die Anzahl der Millisekunden seit der Epoche 1970-01-01T00: 00: 00Z - dh so ziemlich die gleiche wie oben :-)

Prost,


3
Da diese Antwort 2012 war und Java 8 nicht verfügbar war, ist sie gut. Ebenso gut ist die java.time Antwort von Prezemek. Dies berücksichtigt das aktuelle Java 8 java.time-Framework.
Zack Jannsen

1
Zur Bearbeitung: Ich habe einige Möglichkeiten getestet, um eine UTC-Zeit in Millisekunden zu erhalten, und festgestellt, dass java.time.Instant.now (). ToEpochMilli gut funktioniert. Ich habe dies mit den Methodenoptionen der ZonedDateTime.now (ZoneOffset.UTC) -Methode (die ich in anderen Posts als Optionen gesehen habe) verglichen, und wie erwartet war der Java.time.Instant.now () -Ansatz auf meinem Computer etwas schneller ... niedrige einstellige Millisekunden in dreißig aufeinanderfolgenden Läufen.
Zack Jannsen

Denken Sie auch daran, dass System.currentTimeInMs()nicht jede Millisekunde aktualisiert wird!
Höhlenmensch



0

Sie können es auch versuchen

  Calendar calendar = Calendar.getInstance();
  System.out.println(calendar.getTimeInMillis());

getTimeInMillis () - Die aktuelle Zeit in UTC-Millisekunden ab der Epoche


2
Diese schreckliche Datums- / Uhrzeitklasse wurde vor Jahren durch die modernen Java.time- Klassen ersetzt, die durch JSR 310 definiert wurden. Siehe moderne Lösung in Antworten von Bystrup & Hack-R
Basil Bourque

Moderne Lösung mit java.time.Instantin dieser Antwort und dieser Antwort gesehen
Basil Bourque
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.