11
votes

Pourquoi analyse '23: 23h00 'avec SimpleDateFormat ("HH: MM AA") Retour 11h?

Pourquoi analyse '23: 00h 'avec SimpleDateformat ("HH: MM AA") Retour 11 A.M.?


2 commentaires

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.)


6 Réponses :


1
votes

Je suppose que cela fait quelque chose comme: xxx

pour s'assurer que les heures sont dans la plage appropriée.


0 commentaires

17
votes

Vous voulez "HH: MM AA" comme format, si vous analysez une heure de 24 heures.

date = 23:00 PM


2 commentaires

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?



15
votes

Avez-vous essayé HH: mm AA ?

HH est pendant 24 heures tandis que HH est pour 12.


0 commentaires

2
votes

23h00 pourrait être considéré comme 11h le lendemain . JavaScript et PHP fonctionnent comme ça à peu près mais je ne peux pas parler pour Java.


1 commentaires

C'est ce que je regarde ça se passe. Yeap!



4
votes

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) 


0 commentaires

22
votes

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.

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).

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.


1 commentaires

Oh, j'ai vu ce drapeau auparavant et je ne savais jamais que c'était tout. : P (ne se soucie pas de cela)