tl; dr
Instant.ofEpochSecond( 1_280_512_800L )
2010-07-30T18: 00: 00Z
java.time
Das neue Java.time-Framework, das in Java 8 und höher integriert ist, ist der Nachfolger von Joda-Time.
Diese neuen Klassen enthalten eine praktische Factory-Methode zum Konvertieren einer Anzahl von ganzen Sekunden aus der Epoche. Sie erhalten Instant
einen Moment auf der Zeitachse in UTC mit einer Auflösung von bis zu Nanosekunden.
Instant instant = Instant.ofEpochSecond( 1_280_512_800L );
instant.toString (): 2010-07-30T18: 00: 00Z
Sehen Sie, wie der Code live auf IdeOne.com ausgeführt wird .
Asia/Kabul
oder Asia/Tehran
Zeitzonen?
Sie haben angegeben, dass Sie einen Tageszeitwert von 22:30 anstelle von 18:00 erhalten. Ich vermute, dass Ihr PHP-Dienstprogramm implizit eine Standardzeitzone zum Anpassen von UTC anwendet. Mein Wert hier ist UTC, bezeichnet durch Z
(kurz für Zulu
bedeutet UTC). Gibt es eine Chance, dass Ihr Betriebssystem oder PHP auf Asia/Kabul
oder Asia/Tehran
Zeitzonen eingestellt ist? Ich nehme an, wie Sie IRST
in Ihrer Ausgabe berichten, was anscheinend Iran-Zeit bedeutet. Derzeit sind dies 2017 die einzigen Zonen mit einer Sommerzeit, die viereinhalb Stunden vor UTC liegt.
Geben Sie einen richtigen Zeitzonennamen im Format continent/region
, wie zum Beispiel America/Montreal
, Africa/Casablanca
oder Pacific/Auckland
. Verwenden Sie niemals die Abkürzung für 3-4 Buchstaben wie EST
oder IST
oder, IRST
da es sich nicht um echte Zeitzonen handelt, die nicht standardisiert und nicht einmal eindeutig (!) Sind.
Wenn Sie Ihren Moment durch die Linse der Zeitzone einer bestimmten Region sehen möchten , wenden Sie a ZoneId
an , um a zu erhalten ZonedDateTime
. Immer noch der gleiche gleichzeitige Moment, aber als eine andere Wanduhrzeit gesehen .
ZoneId z = ZoneId.of( "Asia/Tehran" ) ;
ZonedDateTime zdt = instant.atZone( z ); // Same moment, same point on timeline, but seen as different wall-clock time.
2010-07-30T22: 30 + 04: 30 [Asien / Teheran]
Konvertieren von java.time in Legacy-Klassen
Sie sollten bei den neuen java.time-Klassen bleiben. Bei Bedarf können Sie jedoch in alte konvertieren.
java.util.Date date = java.util.Date.from( instant );
Joda-Zeit
UPDATE: Das Joda-Time- Projekt befindet sich jetzt im Wartungsmodus. Das Team empfiehlt die Migration zu den Klassen java.time .
Zu Ihrer Information , der Konstruktor für eine Joda-Time DateTime ist ähnlich: Multiplizieren Sie mit Tausend, um eine long
(keine int
!) Zu erzeugen .
DateTime dateTime = new DateTime( ( 1_280_512_800L * 1000_L ), DateTimeZone.forID( "Europe/Paris" ) );
Vermeiden Sie am besten die notorisch lästigen Klassen java.util.Date und .Calendar. Wenn Sie jedoch ein Datum verwenden müssen, können Sie von Joda-Time konvertieren.
java.util.Date date = dateTime.toDate();
Ü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 .
Sie können java.time- Objekte direkt mit Ihrer Datenbank austauschen . Verwenden Sie einen JDBC-Treiber, der mit JDBC 4.2 oder höher kompatibel ist . Keine Notwendigkeit für Zeichenfolgen, keine Notwendigkeit für java.sql.*
Klassen.
Woher bekomme ich die java.time-Klassen?
- Java SE 8 , Java SE 9 und höher
- Eingebaut.
- Teil der Standard-Java-API mit einer gebündelten Implementierung.
- Java 9 fügt einige kleinere Funktionen und Korrekturen hinzu.
- Java SE 6 und Java SE 7
- Android
- Spätere Versionen von Android-Bundle-Implementierungen der Klassen java.time.
- Für frühere Android -Geräte ( <26) passt das ThreeTenABP- Projekt ThreeTen-Backport (oben erwähnt) an. Siehe Verwendung von ThreeTenABP… .
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 .