DateTimeFormatter de Java 8 a du mal à analyser les chaînes ISO 8601 dépourvues de deux-points entre les heures et minutes de décalage, ce qui entraîne des difficultés pour les utilisateurs qui tentent de convertir des chaînes telles que "2018-02-13T10:20:12.120 0000" dans les dates Java 8.
Jusqu'à la correction du bug Java 8 :
Jusqu'au le bug dans Java 8 est résolu, utilisez ce qui suit solution de contournement :
OffsetDateTime.parse( "2018-02-13T10:20:12.120+0000" , DateTimeFormatter.ofPattern( "uuuu-MM-dd'T'HH:mm:ss.SSSX" ) )
Après la correction d'un bug de Java 8 :
OffsetDateTime.parse( "2018-02-13T10:20:12.120+0000" )
Utilisation incorrecte de la classe
Évitez d'utiliser des classes héritées telles que Date, Calendar et SimpleDateFormat en faveur du java.time moderne classes.
Utilisez OffsetDateTime pour les valeurs de décalage uniquement
Pour les valeurs avec des décalages mais sans fuseau horaire, utilisez OffsetDateTime. Les chaînes ISO 8601 sont généralement conformes aux formats standards utilisés par les classes java.time. Cependant, un bug dans Java 8 nécessite une solution de contournement :
Hacky Workaround
Manipulez la chaîne d'entrée pour inclure les deux-points manquants :
String input = "2018-02-13T10:20:12.120+0000".replace( "+0000" , "+00:00" ); OffsetDateTime odt = OffsetDateTime.parse( input );
Solution de contournement plus robuste
Définissez un DateTimeFormatter avec un explicite modèle :
String input = "2018-02-13T10:20:12.120+0000" ; DateTimeFormatter f = DateTimeFormatter.ofPattern( "uuuu-MM-dd'T'HH:mm:ss.SSSX" ); OffsetDateTime odt = OffsetDateTime.parse( input , f );
Considérations supplémentaires
Le bug Java 8 affecte l'analyse des décalages manquant les deux points entre les heures et les minutes. Ce problème affecte les décalages tels que 0000 mais pas 00:00.
Les classes java.time supplantent les classes de date héritées et sont intégrées à Java 8 et versions ultérieures. Ils offrent des capacités de gestion de date et d'heure plus modernes et plus efficaces.
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!