SimpleDateFormatter.parse gibt eine Ausgabe in einem anderen Format als dem angegebenen aus
Diese Frage stellt sich, wenn versucht wird, einen UNIX-Zeitstempel in ein Datum mit einem bestimmten Wert umzuwandeln Formatieren mit SimpleDateFormat. Trotz der Einstellung des gewünschten Formats erscheint das sdf.parse-Ergebnis in einem anderen Format.
Lösung:
Um dieses Problem zu beheben, wird empfohlen, die Übergabe von Datumsangaben als zu vermeiden Zeichenfolgen in eine MySQL-Datenbank. Stattdessen ist es sicherer und präziser, Datumsobjekte zu übergeben, insbesondere Instanzen aus der Java-API für Datum und Uhrzeit (java.time). In diesem Fall ist ein LocalDateTime-Objekt geeignet:
<code class="java">String ep = "a1527069600"; long epoch = Long.parseLong(ep.substring(1)); Instant inst = Instant.ofEpochSecond(epoch); LocalDateTime ldt = inst.atZone(ZoneId.of("Asia/Calcutta")).toLocalDateTime();</code>
Für die Datenbankspeicherung stellt LocalDateTime die Datumszeit im Format „2018-05-23T15:30“ dar.
Um die LocalDateTime in einem zu speichern MySQL-Datenbank:
<code class="java">PreparedStatement ps = myDatabaseConnection.prepareStatement( "insert into my_table (my_date_time) values (?)"); ps.setObject(1, ldt);</code>
Alternative für UTC-Werte:
Wenn die Datenbankwerte in UTC (Universal Time Coordinated) gespeichert werden sollen, verwenden Sie die folgende Konvertierung:
<code class="java">LocalDateTime ldt = inst.atOffset(ZoneOffset.UTC).toLocalDateTime();</code>
Vorteile der Verwendung von java.time:
Das obige ist der detaillierte Inhalt vonWarum gibt SimpleDateFormat.parse ein anderes Format als das angegebene zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!