[JAVA] Wenn SimpleDateFormat wie ٢٠١٨١٠٠٤٠٨٣١٣٣٦٥٧ verstümmelt ist

Fazit

Geben Sie immer das Gebietsschema für SimpleDateFormat an!

Ursache

Wenn das Gebietsschema nicht angegeben ist, kann SimpleDateFormat abhängig vom Gebietsschema des Terminals konvertiert werden. Wenn es sich um ein Land im Nahen Osten handelt, hat es möglicherweise ein System namens "Indian Numbers" eingeführt [^ 1]. Dann wird "20181004083133657" in "٢٠١٨١٠٠٤٠٨٣١٣٣٦٥٧" konvertiert.

Lösung

Geben Sie immer "Locale.US" an!

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmssSSS", Locale.US);

Übrigens, wenn Sie das Gebietsschema auf "neues Gebietsschema" ("ar", "EG") "setzen, kann dieses Phänomen auf Android-Geräten reproduziert werden, aber aus irgendeinem Grund konnte es unter macOS nicht reproduziert werden.

[^ 1]: [Indian Numbers-Wikipedia](https://ja.wikipedia.org/wiki/%E3%82%A4%E3%83%B3%E3%83%89%E6%95%B0%E5 % AD% 97)

Recommended Posts

Wenn SimpleDateFormat wie ٢٠١٨١٠٠٤٠٨٣١٣٣٦٥٧ verstümmelt ist
SimpleDateFormat ist Thread unsicher
Der Dateiname des E-Mail-Anhangs ist verstümmelt
[Windows] Java-Code ist verstümmelt
fields_for wird so verwendet
Wenn die von JNA an C ++ übergebene Zeichenfolge verstümmelt ist
Wenn ich die Eigenschaftendatei bearbeite, sieht es aus wie verstümmelte Zeichen
Wenn das JDBC-Verbindungspooling erstellt wird
Escape-Verarbeitung bei der Suche nach LIKE
Überprüfen Sie, wann Moos mit SimpleDateFormat analysiert wird