Verschiedene Ausgabeformate von SimpleDateFormatter.parse
In einem Java-Programm wird die SimpleDateFormat-Klasse verwendet, um Datumsangaben in bestimmte Formate zu konvertieren. Es wurde jedoch beobachtet, dass in einigen Fällen das Parsen eines Datums mit SimpleDateFormatter.parse zu einem anderen Format als dem bei der Formatierung angegebenen führen kann.
Dieses Problem tritt bei der Konvertierung von UNIX-Zeitstempeln in Datumszeichenfolgen auf. Hier ist ein vereinfachtes Beispiel:
<code class="java">String ep ="a1527069600"; Long epoch = Long.parseLong(ep.substring(1, ep.length())); Date dt = new Date(epoch*1000L); SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss a"); sdf.setTimeZone(TimeZone.getTimeZone("Asia/Calcutta")); System.out.println("SDF.Format - "+sdf.format(dt)); System.out.println("SDF.parse - "+sdf.parse(sdf.format(dt)));</code>
Während in diesem Beispiel das für sdf angegebene Format „TT/MM/JJJJ hh:mm:ss a“ ist, erfolgt die Ausgabe von sdf.parse in einem anderen Format , „Mi, 23. Mai 15:30:00 IST 2018.“
Lösung
Um dieses Problem zu beheben, vermeiden Sie die Übergabe von Datumszeichenfolgen an eine MySQL-Datenbank. Verwenden Sie stattdessen Datumsobjekte. Java stellt die java.time-API für die moderne Datums- und Uhrzeitverarbeitung bereit. Für Ihr spezifisches Szenario können Sie ein LocalDateTime-Objekt verwenden:
<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(); PreparedStatement ps = myDatabaseConnection.prepareStatement( "insert into my_table (my_date_time) values (?)"); ps.setObject(1, ldt);</code>
Dieser Ansatz stellt eine konsistente Datumsformatierung sicher und beseitigt das Parsing-Problem, das bei SimpleDateFormatter.parse auftritt.
Das obige ist der detaillierte Inhalt vonWarum erzeugt SimpleDateFormat.parse beim Konvertieren von UNIX-Zeitstempeln eine unerwartete Ausgabe?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!