Mit Java8 LocalDateTime und Java6 Date ist es schwierig, Mindestwerte zu verarbeiten

Beachten Sie, dass ich beim Versuch, mit Java8 LocalDateTime und Java6 Date über JSON zu serialisieren und zu deserialisieren, vom Titel abhängig war.

Als Bild habe ich versucht, projektübergreifend Folgendes zu tun.

Java8 DateTime -> (Serialize) -> JSON -> (Deserialize) -> Java6 Date

Dann erscheint die Differenz zwischen dem möglichen Wertebereich zwischen "LocalDateTime" und "Date". Insbesondere passiert, dass der ursprüngliche Wert verloren geht, wenn Sie etwas mit einem Wertebereich deserialisieren, der nicht durch "Datum" dargestellt werden kann, z. B. "LocalDateTime.MIN".

Insbesondere wird es wie folgt sein.

import java.time.LocalDateTime
import java.time.ZoneOffset
import java.time.format.DateTimeFormatter
import java.util.Date
import java.text.SimpleDateFormat

fun main(args: Array<String>) {
    val formatter = SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss")
    
    val minLocalDateTime = formatter.format(formatter.parse(
        DateTimeFormatter.ISO_LOCAL_DATE_TIME.format(LocalDateTime.MIN)))
    val minDateText = formatter.format(Date(Long.MIN_VALUE))
    val zeroDateText = formatter.format(Date(0L))
    
    val zeroEpocLocalDateTime = formatter.format(formatter.parse(
        DateTimeFormatter.ISO_LOCAL_DATE_TIME.format(
            LocalDateTime.ofEpochSecond(0L, 0, ZoneOffset.UTC))))
    
println (
"""Java8 DateTime | LocalDateTime.MIN     | ${LocalDateTime.MIN}
Java6 Date     | LocalDateTime.MIN     | $minLocalDateTime
Java6 Date     | Date(Long.MIN_VALUE)  | $minDateText
Java6 Date     | Date(0L)              | $zeroDateText
Java8 DateTime | ofEpochSecond(0L, 0,) | $zeroEpocLocalDateTime
""")
}

Ausführungsergebnis.

Java8 DateTime | LocalDateTime.MIN     | -999999999-01-01T00:00
Java6 Date     | LocalDateTime.MIN     | 169087565-03-15T04:51:43
Java6 Date     | Date(Long.MIN_VALUE)  | 292269055-12-02T04:47:04
Java6 Date     | Date(0L)              | 1970-01-01T12:00:00
Java8 DateTime | ofEpochSecond(0L, 0,) | 1970-01-01T12:00:00

Wie bereits im Ausführungsergebnis erwähnt, wird die Epochenzeit verwendet, um diesen Unterschied auszugleichen. Durch Festlegen des Mindestwerts auf der Seite, auf der "LocalDateTime" verwendet wird, auf den Mindestwert in der Epochenzeit bleibt die Kompatibilität erhalten.

Sie können die minimale Epochenzeit mithilfe von "LocalDateTime.ofEpochSecond (0L, 0, ZoneOffset.UTC)" ermitteln. Neben "LocalDateTime" können Sie also Java6 verwenden. Sie können es mit Ihrem Projekt kompatibel machen.

Recommended Posts

Mit Java8 LocalDateTime und Java6 Date ist es schwierig, Mindestwerte zu verarbeiten
[Java] Verwenden Sie ResolverStyle.LENIENT, um Datum und Uhrzeit gut zu handhaben
[Java] Verwendung der Kalenderklasse und der Datumsklasse
[Java] Beispiel eines Programms, das die Maximal- und Minimalwerte von einem Array abruft
[Für Anfänger] Mindestbeispiel für die Anzeige von RecyclerView in Java
Behandeln Sie die Java 8-Datums- und Uhrzeit-API mit Thymeleaf mit Spring Boot
Was ist die LocalDateTime-Klasse? [Java-Anfänger] -Datum und Zeitklasse-
Beispielcode zum Parsen von Datum und Uhrzeit mit Java SimpleDateFormat
Unterschiede im Umgang mit Zeichenfolgen zwischen Java und Perl
Java während und für Anweisungen
[Für Anfänger] Mindestbeispiel zum Aktualisieren von RecyclerView mit DiffUtils in Java
Java-Veröffentlichungsdatum und EOL-Zusammenfassung
Java für Anfänger, Ausdrücke und Operatoren 1
Standardwerte für MaxHeapSize und InitialHeapSize
Java-Argumente, Rückgabewerte und Überladungen
Java für Anfänger, Ausdrücke und Operatoren 2
[MySQL] [Java] Datum und Uhrzeit empfangen
Klassen und Instanzen Java für Anfänger
Weisen Sie der Maven-Version automatisch Datum und Build-Nummer für den Tag zu
So implementieren Sie die Datumsberechnung in Java
Einführung in Java zum ersten Mal # 2
[java] Zusammenfassung des Umgangs mit char
Über das Verfahren, damit Java funktioniert
Java-Implementierung zum Erstellen und Lösen von Labyrinthen
[Java] Wie man Dateien ausgibt und schreibt!
[Java] So stellen Sie die Datums- und Uhrzeit auf 00:00:00 ein
Java 8 startet jetzt ~ Datums- und Uhrzeit-API ~
Java: So senden Sie Werte von Servlet zu Servlet
So erhalten Sie das Datum mit Java
[Java] Proxy zum Protokollieren von SQL und SQL-Ergebnissen
[Einführung in Java] Informationen zu Variablendeklarationen und -typen
Memo für die Migration von Java nach Kotlin
Von Java nach C und von C nach Java in Android Studio
[Java] Ermitteln Sie das Datum mit der LocalDateTime-Klasse