Analyse de date Java avec une précision de l'ordre de la microseconde ou de la nanoseconde

Selon la SimpleDateFormat de documentation de classeJava ne prend pas en charge granularité du temps au-dessus de millisecondes dans ses motifs modernes.

Ainsi, une chaîne de date comme

  • 2015-05-09 00:10:23.999750900 //Les 9 derniers chiffres dénotent nanosecondes

quand analysée par le modèle

  • aaaa-MM-jj HH:mm:ss.SSSSSSSSS //9 'S' symboles

en fait l'interprète de l'ensemble de la le nombre après la . symbole (près de 1 milliard de dollars!) millisecondes et non pas comme la nanoseconde, entraînant la date

  • 2015-05-20 21:52:53 UTC

c'est à dire plus de 11 jours à l'avance. Étonnamment, à l'aide d'un plus petit nombre de S symboles encore les résultats dans tous les 9 chiffres pour être analysée (au lieu de, disons, le plus à gauche 3 pour .SSS).

Il y a 2 façons de traiter ce problème correctement:

  • Utilisation de la chaîne de prétraitement
  • Utiliser un SimpleDateFormat mise en œuvre

Aurait-il une autre façon pour obtenir une solution correcte par la simple fourniture d'un modèle à la norme SimpleDateFormat mise en œuvre, sans autres modifications du code ou de la manipulation de la chaîne?

source d'informationauteur PNS