J'ai recherché partout et ne trouve pas d'explication ou de raison pour que cela se produise, mais la méthode parse (String) de DateFormat n'analyse pas mon String correctement.Analyse d'une chaîne dans Date avec DateFormat pas analyse correcte
J'essaie d'analyser une chaîne dans le format de date qui est utilisé pour les en-têtes HTTP et obtenu aussi loin que faire la chaîne sur son propre tels que:
Thu, 11 Nov 2010 18:34:22 GMT
Ce qui est dans le format:
E, d MMM yyyy HH:mm:ss z
Mais quand je l'utilise df.parse(dateStr);
ce que je sors de celui-ci:
Thu Nov 11 18:34:22 GMT 2010
ce qui est Rien de tel que ce que je voulais, pourquoi l'année est-elle maintenant après le GMT? Pourquoi n'y a-t-il plus de virgule? Et pourquoi la date est-elle après le mois?
Je suis complètement confus à ce sujet maintenant et ne peux pas trouver une solution, mais j'ai vraiment besoin de la date pour être dans ce format. La virgule est-elle en train de gâcher les choses? ou les deux-points?
Merci pour votre temps,
Infinitifizz
post-scriptum
J'ai oublié de le mentionner mais j'ai essayé dateformat.setLenient (false) et cela ne fait aucune différence.
PPS
Je suis en train de faire pour comparer les dates avec date1.before (date2) et après() etc pour voir si l'on est plus récente que l'autre, mais je ne peux pas le faire parce que le l'analyse ne fonctionne pas.
Même s'ils se ressemblent mais que le format est différent, ils ne sont pas identiques car après avoir appelé getTime() sur les deux (lorsque j'ai fourni 2 dates identiques), les longs ne sont pas identiques. Comme la date est:
Jeu 11 novembre 2010 19:38:52 GMT pour un lastModified() sur un fichier
Si je la chaîne « Jeu, 11 novembre 2010 19:38:52 GMT »et puis de comparer leurs positions longues conversion une fois que la chaîne à une date à l'aide parse(), puis en appelant getTime() à cette date que je reçois:
lastModified = 1289504332671 fromString = 1289504332000
Il est seulement le dernier 3 chiffres qui sont différents, cela a-t-il une signification?
Merci encore pour votre temps et désolé de ne pas mettre ce bit dans la première,
Infinitifizz
bonne réponse (+1). J'ai immédiatement cessé de travailler sur le mien quand celui-ci est apparu. –
Je ne suis pas sûr de vous avoir compris. Je veux obtenir une date à partir d'une chaîne, pas une chaîne à partir d'une date, c'est pourquoi j'utilise parse() pas format(). –
Ah désolé, je pense que je comprends! Donc, parce que je n'utilise que System.out.println (dateFromString), il utilise la valeur par défaut toString() plutôt que celle formatée. Donc, comme un morceau de code complet, je reçois une chaîne (de la date dans le format que je veux) l'analyse dans une date que je veux utiliser, mais ce n'est pas dans le format que je veux, puis en utilisant format() pour prendre -il du format par défaut dans le format que je veux? Edit: "... format dans le format que je veux pour l'afficher?" –