Pourquoi l'analyse «23: 00 PM» avec SimpleDateFormat("hh:mm aa")
revient-elle à 11 h?Pourquoi l'analyse de '23: 00 PM 'avec SimpleDateFormat ("hh: mm aa") renvoie-t-elle 11 heures?
Répondre
Vous devriez obtenir une exception, car "23:00 PM" n'est pas une chaîne valide, mais la fonction de date/heure de Java est lenient par défaut, lors de la gestion de l'analyse des dates. La logique est que 23h00 est 12 heures après 23h00, ce qui est 11h00 le jour suivant. Vous verrez également des choses comme "31 avril" étant analysé comme "1er mai" (un jour après le 30 avril).
Si vous ne souhaitez pas ce comportement, définissez la propriété indentifiable sur false sur votre SimpleDateFormat à l'aide de DateFormat#setLenient(boolean), et vous obtiendrez une exception si vous transmettez une date/heure non valide.
Oh, j'ai déjà vu ce drapeau, et je n'ai jamais su que c'était tout. : P (ne vous en souciez pas) – OscarRyz
Avez-vous maintenant? :) –
Je suppose que cela fait quelque chose comme:
hours = hours % 12;
pour faire en sorte que les heures sont dans la bonne plage.
Vous voulez que "HH: mm aa" soit votre format, si vous voulez analyser l'heure sur 24 heures.
public static void main(String[] args) throws ParseException {
SimpleDateFormat df = new SimpleDateFormat("HH:mm aa");
final Date date = df.parse("23:00 PM");
System.out.println("date = " + df.format(date));
}
sorties
date = 23:00 PM
SimpleDateFormat df = new SimpleDateFormat ("HH: mm aa"); est de donner un avertissement de la peluche .. avez-vous une idée comment résoudre ce problème? – NovusMobile
Satyam, quel est l'avertissement? –
Avez-vous essayé HH:mm aa
?
HH
est 24 heure alors que hh
est pour 12.
23:00 PM pourrait être considéré comme 11 heures le lendemain. Javascript et PHP fonctionnent comme ça, mais je ne peux pas parler pour Java.
Voilà ce que je regarde ça se passe. Yeap! – OscarRyz
Voici les options de formatage spécifiées dans la 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)
Notez que "h" serait pendant des heures 1-12. Si vous voulez gérer 1-24, essayez "k". pour 0-23, essayez "H". Mais je ne m'attendrais pas à des résultats valables si vous mettez des données impossibles.
- 1. DateTime Format comme HH: mm 24 heures sans AM/PM
- 2. javascript conversion de aaaa-mm-jj hh: mm: ss aa aide
- 3. aaaa-mm-jj hh: mm: ss dans SQL Server pour devenir aaaa-mm-jj en C#
- 4. Expression régulière pour le format d'heure de date "MM/JJ/AA HH: mm: ss AM/PM" dans le validateur d'expressions régulières asp.net
- 5. Comment puis-je convertir hh: mm: ss en hh: mm dans SQL Server?
- 6. Utiliser jQuery tablesorter pour trier les dates mm/aa
- 7. Impossible de convertir '0000-00-00 00:00:00' à TIMESTAMP
- 8. Pourquoi l'année n'est-elle pas correcte avec SimpleDateFormat en java?
- 9. Comment obtenir un 00:00:00 au lieu de 12:00:00 AM?
- 10. temps en chaîne avec HH: MM: SS (C-programmation)
- 11. Comment puis-je utiliser l'analyseur de date/heure du langage naturel Chronique pour analyser "12:00" comme 12:00 PM?
- 12. Pourquoi la fonction DB2 CHAR() renvoie-t-elle '24: 00: 00 'pour un champ de temps 00:00:00?
- 13. temps Struts2 (HH: mm) cartographie au champ d'action
- 14. Conversion de jj/mm/aaaa en mm/jj/aaaa
- 15. Pouvez-vous formater une chaîne de temps de 24 heures en chaîne de 12 heures avec AM/PM?
- 16. Actionscript 3 - Le moyen le plus rapide d'analyser aaaa-mm-jj hh: mm: ss à un objet Date?
- 17. Analyse de date incohérente en utilisant SimpleDateFormat
- 18. Voir HH: mm format 24h à TemplateField en utilisant la propriété de texte
- 19. Comment convertir des secondes en HH: MM: SS en utilisant T-SQL
- 20. java inattendue SimpleDateFormat Parse exception
- 21. Expression régulière pour correspondre à 12 heures
- 22. mysql 12 heures à 24 heures de temps de conversion
- 23. Comment convertir un nombre de minutes en un format hh: mm dans obj-c?
- 24. Formatage de la date Paypal: qu'est ce que "HH: MM: SS DD Mmm YY, YYYY PST"?
- 25. Comparaison de dates MySQL incohérente AAAA/MM/JJ vs AAAA-MM-JJ
- 26. Java: calcul de durée
- 27. Calculer l'heure entre 09:00 - 18:00
- 28. mod 11 chiffre de contrôle avec regex
- 29. Comment puis-je convertir HH: MM: SS en quelques secondes en utilisant C# .net?
- 30. Conversion du temps d'entrée 00 00 h à DATETIME pour MySQL
ouais ... cette question n'a même pas de sens. poubelle dedans, poubelle dehors. vous avez probablement raison d'ajouter 12 heures en interne pour «pm». – mpen
@Peter: Eh bien, je sais que !! En fait, je découvre le problème après quelques minutes. Ce n'est pas la question ici. (Avez-vous déjà débogué le code d'un autre utilisateur?) – OscarRyz