Problème :
Analyse d'une date- la chaîne d'heure utilisant SimpleDateFormat échoue sur un appareil spécifique, ce qui entraîne une « date non analysable » erreur.
Analyse :
SimpleDateFormat nécessite un paramètre Locale pour spécifier la langue et les conventions culturelles pour l'analyse des dates. Si aucun paramètre régional n'est spécifié, le paramètre régional par défaut du système est utilisé. Cela peut entraîner des incohérences d'analyse sur les appareils avec des paramètres régionaux différents.
Solution :
Explication détaillée :
La chaîne date-heure donnée ( "24 octobre 2016 19h31") est en anglais. Cependant, si la langue par défaut du système n'est pas l'anglais (par exemple, dans le cas d'un téléphone français), l'instance SimpleDateFormat par défaut ne parviendra pas à l'analyser.
Java 8 (DateTimeFormatter) :
Dans Java 8, utilisez DateTimeFormatter avec une localisation explicite pour analyser les chaînes date-heure personnalisées. Évitez d'utiliser les formateurs prédéfinis, qui n'acceptent pas les paramètres régionaux. Par exemple :
DateTimeFormatter dtf = new DateTimeFormatterBuilder() .parseCaseInsensitive() .appendPattern("d MMM uuuu h:m a") .toFormatter(Locale.ENGLISH); LocalDateTime ldt = LocalDateTime.parse(strDateTime, dtf);
Java 6/7 (ThreeTen-Backport) :
Si vous êtes bloqué avec Java 6 ou Java 7, utilisez ThreeTen-Backport pour rétroporter le Fonctionnalité DateTimeFormatter.
Supplémentaire Notes :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!