[JAVA] Lorsque SimpleDateFormat est déformé comme ٢٠١٨١٠٠٤٠٨٣١٣٣٦٥٧

Conclusion

Spécifiez toujours Locale pour SimpleDateFormat!

Cause

Si Locale n'est pas spécifié, SimpleDateFormat peut être converti en fonction des paramètres régionaux du terminal. S'il s'agit d'un pays du Moyen-Orient, il a peut-être adopté un système appelé "Nombres indiens" [^ 1]. Ensuite, «20181004083133657» sera converti en «٢٠١٨١٠٠٤٠٨٣١٣٣٦٥٧».

Solution

Spécifiez toujours Locale.US!

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

En passant, si vous définissez les paramètres régionaux sur new Locale (" ar "," EG "), ce phénomène peut être reproduit sur les appareils Android, mais pour une raison quelconque, il ne peut pas être reproduit sur macOS.

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

Recommended Posts

Lorsque SimpleDateFormat est déformé comme ٢٠١٨١٠٠٤٠٨٣١٣٣٦٥٧
SimpleDateFormat est thread unsafe
Le nom du fichier des pièces jointes aux e-mails est déformé
[Windows] Le code Java est déformé
fields_for est utilisé comme ceci
Lorsque la chaîne de caractères transmise au C ++ par JNA est déformée
Lorsque j'édite le fichier de propriétés, il ressemble à des caractères déformés
Lors de la création du pool de connexions JDBC
Traitement d'échappement lors de la recherche de LIKE
Vérifier quand moss avec SimpleDateFormat parse