tl; dr
Instant.ofEpochMilli( 1_322_018_752_992L ) // Parse count of milliseconds-since-start-of-1970-UTC into an `Instant`.
.atZone( ZoneId.of( "Africa/Tunis" ) ) // Assign a time zone to the `Instant` to produce a `ZonedDateTime` object.
Einzelheiten
Die anderen Antworten verwenden veraltete oder falsche Klassen.
Vermeiden Sie die alten Datums- und Uhrzeitklassen wie java.util.Date/.Calendar. Sie haben sich als schlecht gestaltet, verwirrend und problematisch erwiesen.
java.time
Das java.time- Framework ist in Java 8 und höher integriert. Ein Großteil der Funktionen wird auf Java 6 & 7 zurückportiert und weiter an Android angepasst . Hergestellt von einigen der gleichen Leute wie Joda-Time .
An Instant
ist ein Moment auf der Zeitachse in UTC mit einer Auflösung von Nanosekunden . Seine Epoche ist der erste Moment des Jahres 1970 in UTC.
Angenommen, Ihre Eingabedaten sind eine Anzahl von Millisekunden von 1970-01-01T00: 00: 00Z (in der Frage nicht klar), dann können wir leicht eine instanziieren Instant
.
Instant instant = Instant.ofEpochMilli( 1_322_018_752_992L );
instant.toString (): 2011-11-23T03: 25: 52.992Z
Die Z
in dieser Norm ISO 8601 formatierte Zeichenfolge steht für UTCZulu
und bedeutet UTC .
Wenden Sie eine Zeitzone mit einem geeigneten Zeitzonennamen an , um eine zu erhalten ZonedDateTime
.
ZoneId zoneId = ZoneId.of( "Asia/Kolkata" ) ;
ZonedDateTime zdt = instant.atZone( zoneId );
Sehen Sie diesen Code live auf IdeOne.com .
Asia/Kolkata
Zeitzone ?
Ich vermute, Sie haben eine Zeitzone in Indien, die sich auf Ihren Code auswirkt. Wir sehen hier, dass die Anpassung in die Asia/Kolkata
Zeitzone dieselbe Tageszeit 08:55
ergibt , die Sie melden, und die fünfeinhalb Stunden vor unserem UTC-Wert liegt 03:25
.
2011-11-23T08: 55: 52.992 + 05: 30 [Asia / Kolkata]
Standardzone
Sie können die aktuelle Standardzeitzone der JVM anwenden . Beachten Sie, dass sich die Standardeinstellung jederzeit zur Laufzeit ändern kann . Jeder Code in einem Thread einer App innerhalb der JVM kann den aktuellen Standard ändern. Wenn wichtig, fragen Sie den Benutzer nach der gewünschten / erwarteten Zeitzone.
ZoneId zoneId = ZoneId.systemDefault();
ZonedDateTime zdt = ZonedDateTime.ofInstant( instant , zoneId );
Über java.time
Das java.time- Framework ist in Java 8 und höher integriert. Diese Klassen verdrängen die lästigen alten Legacy - Datum-Zeit - Klassen wie java.util.Date
, Calendar
, & SimpleDateFormat
.
Das Joda-Time- Projekt, das sich jetzt im Wartungsmodus befindet , empfiehlt die Migration zu den Klassen java.time .
Weitere Informationen finden Sie im Oracle-Lernprogramm . Suchen Sie im Stapelüberlauf nach vielen Beispielen und Erklärungen. Die Spezifikation ist JSR 310 .
Mit einem JDBC - Treiber mit Einhaltung JDBC 4.2 oder später, können Sie tauschen java.time Objekte direkt mit Ihrer Datenbank. Keine Notwendigkeit für Strings oder java.sql. * Klassen.
Woher bekomme ich die java.time-Klassen?
Das ThreeTen-Extra- Projekt erweitert java.time um zusätzliche Klassen. Dieses Projekt ist ein Testfeld für mögliche zukünftige Ergänzungen von java.time. Sie können einige nützliche Klassen hier wie finden Interval
, YearWeek
, YearQuarter
, und mehr .