Pourquoi analyse '23: 00h 'avec SimpleDateformat ("HH: MM AA") Code> Retour 11 A.M.? P>
6 Réponses :
Je suppose que cela fait quelque chose comme: pour s'assurer que les heures sont dans la plage appropriée. P> P>
Vous voulez "HH: MM AA" comme format, si vous analysez une heure de 24 heures.
date = 23:00 PM
SimpleDateFormat DF = Nouveau SimpleDateDeformat ("HH: MM AA"); donne un avertissement de peluche .. avez-vous une idée de la résolution de cela?
Satyam, quel est l'avertissement?
Avez-vous essayé HH: mm AA code>? p>
HH code> est pendant 24 heures tandis que
HH code> est pour 12. P>
23h00 pourrait être considéré comme 11h le lendemain em>. JavaScript et PHP fonctionnent comme ça à peu près mais je ne peux pas parler pour Java. P>
C'est ce que je regarde ça se passe. Yeap!
Voici les options de formatage spécifiées dans le Javadoc
H Hour in day (0-23) k Hour in day (1-24) K Hour in am/pm (0-11) h Hour in am/pm (1-12)
Vous devriez avoir une exception, car "23h00" n'est pas une chaîne valide, mais la date de date / heure de Java est Lenient Par défaut, lors de la manipulation de la date d'analyse. P>
La logique est que 23h00 est 12 heures après 23h00, soit 11h00 le lendemain. Vous verrez également des choses comme "le 31 avril" étant analysées "1er mai" (un jour après le 30 avril). P>
Si vous ne voulez pas ce comportement, définissez la propriété Lenient sur False sur votre SimpleDateFormat en utilisant DateFormat # Setlenient (Boolean) , et vous obtiendrez une exception lors de la date / période non valide. P>
Oh, j'ai vu ce drapeau auparavant et je ne savais jamais que c'était tout. : P (ne se soucie pas de cela)
Oui ... cette question n'a même pas de sens. ordures dans, ordures. Vous avez probablement raison de noter 12 heures en interne pour 'pm'.
@Peter: Eh bien, je sais que !! En fait, je découvre ce que le problème était après quelques minutes. Ce n'est pas la question ici. (Avez-vous déjà débogué quelqu'un d'autre code? Ensuite, cela aura un sens.)