L'analyse de la RFC 2822 date en JAVA
J'ai besoin d'analyser un RFC 2822 représentation sous forme de chaîne d'une date en Java. Un exemple de chaîne est ici:
Sat, 13 Mar 2010 11:29:05 -0800
Il a l'air assez méchant donc je voulais m'assurer que j'ai tout bon et serait confronté à des problèmes bizarres plus tard à la date d'être mal interprété soit par le biais d'AM-PM/Militaire problèmes de temps, de temps UTC, des problèmes, des problèmes je ne pense pas, etc...
Merci!
- Avez-vous essayé d'utiliser
java.text.SimpleDateFormat
? - Qui ressemble le droit de l'utiliser, j'ai été inquiet de ce que le format correct de la chaîne était ainsi, il ressemblait à quelque chose qui serait facile de désordre. Cela semble être la bonne chaîne pour le RFC 2822 bien: "EEE, d MMM aaaa HH:mm:ss Z" (conformément à la réponse ci-dessous)
- pas
d
maisdd
. - C'est sauvage, j'ai pris que de l'officiel SimpleDateFormat page. Sa techniquement corrects pour leur exemple, mais toujours mal: java.sun.com/j2se/1.4.2/docs/api/java/text/... Merci de me donner un heads-up, c'est ce que j'avais dans mon code.
- Source de la norme: Format de Message Internet, faites défiler jusqu'à la section 3.3. La Date et l'Heure de la Spécification.
Vous devez vous connecter pour publier un commentaire.
C'est rapide code qui fait ce que vous demandez (à l'aide de SimpleDateFormat)
PS. Je n'ai pas traité avec des exceptions, et la simultanéité de l'ici (comme SimpleDateFormat n'est pas synchronisé lors de l'analyse de la date).
Si votre application utilise une autre langue que l'anglais, vous voudrez peut-être forcer les paramètres régionaux pour la date de l'analyse/mise en forme à l'aide d'une autre SimpleDateFormat constructeur:
Veuillez garder à l'esprit que le [jour de la semaine ","] est facultatif dans la RFC-2822, d'où le suggère exemples ne sont pas couvrant tous les RFC-2822 formats de date. En plus, le RFC-822 date type de permis à de nombreux différents temps de la zone de notations(obs-zone), qui ne sont pas couverts par le "Z" spécificateur de format.
Je suppose qu'il n'est pas facile, d'autres que la recherche pour "," et "-|+" pour déterminer le modèle à utiliser.
day-of-week
est facultatif, aussi les secondes dans le temps de la journée est déclarée en option:time-of-day = hour ":" minute [ ":" second ]
Depuis Java 8 new datetime classes ont été mises en œuvre:
java.time.ZonedDateTime
etjava.time.LocalDateTime
.ZonedDateTime
prend en charge l'analyse de la RFC chaînes près de la boîte: