Letztes Mal: Fortsetzung Java8 ~ Stream API ~ Zwei Mal zuvor: Java 8 ~ für jeden und Lambda-Ausdruck ~
Bei der Behandlung von Datum und Uhrzeit in Java7 wurde die Werterhaltung von der Datumsklasse und die Operation von der Kalenderklasse getrennt. Es wurden jedoch APIs hinzugefügt, die in Java8 gemeinsam verarbeitet werden können.
LocalDateTime Datum Uhrzeit ohne Zeitzone
OffsetDateTime Datum und Uhrzeit mit Versatz von UTC / Greenwich
ZonedDateTime Datum / Uhrzeit mit Zeitzone
Instant Ein Wert, der eine bestimmte Zeit darstellt 1970-01-01T 00:00:00 Es hat ein Long, das die Epochensekunden von Z darstellt, und ein Int, das die Nanosekunden darstellt.
Die Verwendung von LocalDateTime, OffsetDateTime und ZonedDateTime ist nahezu identisch, daher werde ich dies mit LocalDateTime erläutern.
LocalDateTime current = LocalDateTime.now(); // -> 2018-03-03T12:09:50.875
LocalDateTime atMin = LocalDateTime.of(2018,3,3,12,1); // -> 2018-03-03T12:01
LocalDateTime atSec = LocalDateTime.of(2018,3,3,12,1,23); // -> 2018-03-03T12:01:23
LocalDateTime atNanoSec = LocalDateTime.of(2018,3,3,12,1,23,123456789); // -> 2018-03-03T12:01:23.123456789
Es gibt eine statische Methode, die durch Angabe von Jahr, Monat, Tag, Stunde, Minute, Sekunde und Nanosekunde generiert werden kann. Nicht angegebene Felder sind Null Der Monat kann im Gegensatz zur Kalenderklasse mit 1 bis 12 angegeben werden.
Verwenden Sie zum Konvertieren von Datum / Kalender in LocalDateTime die neu hinzugefügte Methode ".toInstant ()" und führen Sie "Instant" durch. Holen Sie sich den Systemstandard, da Sie die ZoneId angeben müssen
Calendar now = Calendar.getInstance();
Instant nowInstant = now.toInstant();
LocalDateTime fromCalendar = LocalDateTime.ofInstant(nowInstant, ZoneId.systemDefault());
Es gibt eine Methode, um jedes Jahr, jeden Monat, jeden Tag, jede Stunde, jede Minute, jede Sekunde und jede Nanosekunde zu ermitteln
LocalDateTime current = LocalDateTime.now(); // -> 2018-03-03T12:09:50.875
System.out.println(current.Hour()); // -> 12
System.out.println(current.getMonth()); // -> MARCH
System.out.println(current.getMonthValue()); // -> 3
Die Methode "getMonth ()" gibt einen Aufzählungstyp Monat zurück, der den Monat darstellt.
Bis Java 7 können die Vorgänge, für die die Calendar-Klasse verantwortlich war, direkt mit LocalDateTime ausgeführt werden. Es gibt eine Methode, die LocalDateTime für jedes Jahr, jeden Monat, jeden Tag, jede Stunde, jede Minute, jede Sekunde und jede Nanosekunde addiert (plus) und subtrahiert (minus) zurückgibt. ** Der Wert der ursprünglichen Instanz ändert sich nicht **
LocalDateTime current = LocalDateTime.now(); // -> 2018-03-03T12:09:50.875
LocalDateTime plusMin = current.plusMinutes(10); // -> 2018-03-03T12:19:50.875
LocalDateTime plusMonth = current.plusMonths(2); // -> 2018-05-03T12:09:50.875
LocalDateTime minusYear = current.minusYears(1); // -> 2017-03-03T12:09:50.875
Verwenden Sie die Methode "ofPattern" der Klasse "DateTimeFormatter", um Datum und Uhrzeit zu formatieren.
LocalDateTime current = LocalDateTime.now();
System.out.println(current.format(DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss.SSS"))); // -> 2018/03/03 12:09:50.875
Sie können auch Konstanten verwenden, die im ISO-Format definiert sind
LocalDateTime current = LocalDateTime.now();
System.out.println(current.format(DateTimeFormatter.ISO_DATE)); // -> 2018-03-03
System.out.println(current.format(DateTimeFormatter.ISO_LOCAL_TIME)); // -> 12:09:50.875
Recommended Posts