Heim  >  Artikel  >  Datenbank  >  Warum liefert SimpleDateFormat.parse ein unerwartetes Ausgabeformat?

Warum liefert SimpleDateFormat.parse ein unerwartetes Ausgabeformat?

Barbara Streisand
Barbara StreisandOriginal
2024-11-01 03:12:02235Durchsuche

Why Does SimpleDateFormat.parse Yield an Unexpected Output Format?

SimpleDateFormatter.parse gibt ein unerwartetes Ausgabeformat aus

In Ihrem Code sind Sie auf eine Diskrepanz gestoßen, bei der SimpleDateFormatter.format und SimpleDateFormatter.parse produzieren verschiedene Ausgabeformate. Sehen wir uns die Gründe für dieses Verhalten genauer an.

Die SimpleDateFormatter-Klasse erfordert sowohl Datumsformatierung als auch Zeitzoneninformationen, um Datumsangaben korrekt zu manipulieren. In Ihrem Fall ist das von Ihnen angegebene Format „TT/MM/JJJJ hh:mm:ss a“ (z. B. 23.05.2018 15:30:00 Uhr). Wenn Sie jedoch das formatierte Datum mit demselben Format zurückparsen, erkennt es die Zeitzone IST (Indian Standard Time) aufgrund des „a“ im Format, das die AM/PM-Bezeichnung darstellt.

Dies bedeutet, dass SimpleDateFormatter.parse das Datum mit der IST-Zeitzone interpretiert, was zu dem von Ihnen beobachteten Zeitstempel führt: „Mittwoch, 23. Mai, 15:30:00 IST 2018.“ Dieses Format unterscheidet sich von dem, das Sie ursprünglich angegeben haben, da es die Zeitzoneninformationen enthält.

Um dieses Problem zu beheben, ziehen Sie die folgenden Lösungen in Betracht:

  • Verwenden Sie java.time LocalDateTime: Wie in der akzeptierten Antwort vorgeschlagen, bietet die Verwendung von LocalDateTime der java.time-API einen saubereren und moderneren Ansatz. Dieses Objekt kapselt Datums- und Uhrzeitinformationen ohne Zeitzonenverzerrung. Sie können einen Epochenzeitstempel in einen LocalDateTime konvertieren und ihn direkt in Ihre MySQL-Datenbank einfügen, ohne Probleme beim Parsen zu haben.
  • Legen Sie die Zeitzone explizit fest: Alternativ können Sie SimpleDateFormatter verwenden dass Sie die Zeitzone explizit festlegen, bevor Sie Parse anwenden. Durch die Angabe der Zeitzone im Voraus können Sie die Interpretation von Datums- und Uhrzeitwerten steuern.

Zusammenfassend lässt sich sagen, dass die Diskrepanz zwischen SimpleDateFormatter.format und SimpleDateFormatter.parse auf Überlegungen zur Zeitzone zurückzuführen ist. Durch die Nutzung der java.time-API oder die explizite Verwaltung von Zeitzonen in SimpleDateFormatter können Sie diese Formatierungsinkonsistenzen vermeiden und eine konsistente Datumsverarbeitung sicherstellen.

Das obige ist der detaillierte Inhalt vonWarum liefert SimpleDateFormat.parse ein unerwartetes Ausgabeformat?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn