Maison >Java >javaDidacticiel >Quelle est la différence entre « kk:mm », « HH:mm » et « hh:mm » dans SimpleDateFormat de Java ?

Quelle est la différence entre « kk:mm », « HH:mm » et « hh:mm » dans SimpleDateFormat de Java ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-09 12:08:02953parcourir

What is the difference between

Comprendre les nuances de kk:mm, HH:mm et hh:mm dans SimpleDateFormat

Lors de l'utilisation de SimpleDateFormat de Java pour manipuler la date et temps, il est crucial de discerner les différences subtiles entre les spécificateurs de format « kk:mm », « HH:mm » et « hh:mm ». Examinons chacun de ces formats :

  • "kk:mm": format 24 heures (01-24)

Ce format représente l'heure au format 24 heures, avec des valeurs d'heure allant de 01 à 24. Par exemple, 01h00 représente 1h00 du matin, tandis que 24h00 représente minuit.

  • "HH :mm": format 24 heures (00-23)

Semblable à "kk:mm", "HH:mm" représente l'heure au format 24 heures. Cependant, les valeurs horaires autorisées vont de 00 à 23, ce qui signifie qu'il n'y a pas de représentation « 24h00 ». Au lieu de cela, minuit est représenté par 00h00.

  • "hh:mm" : format 12 heures (01-12 en AM/PM)

Ce format utilise une horloge de 12 heures avec un indicateur AM/PM. Les valeurs horaires vont de 01 à 12, où 01 représente 1h00 du matin et 12 représente 12h00.

Exemple

Pour illustrer ces différences, considérez ce qui suit extrait de code :

SimpleDateFormat broken = new SimpleDateFormat("kk:mm:ss");
SimpleDateFormat working = new SimpleDateFormat("HH:mm:ss");
SimpleDateFormat working2 = new SimpleDateFormat("hh:mm:ss");

broken.setTimeZone(TimeZone.getTimeZone("Etc/UTC"));
working.setTimeZone(TimeZone.getTimeZone("Etc/UTC"));

System.out.println(broken.format(epoch));
System.out.println(working.format(epoch));
System.out.println(working2.format(epoch));

Sortie :

24:00:00
00:00:00
05:30:00

Comme vous pouvez l'observer, "kk:mm" renvoie l'heure au format 24 heures avec un valeur de 24:00:00. "HH:mm" formate correctement l'heure à 00:00:00 car il n'y a pas de représentation 24h00 dans une horloge de 24 heures. Cependant, « hh:mm » produit un résultat inattendu de 05:30:00. En effet, le format « hh:mm » spécifie une horloge de 12 heures et, comme l'heure correcte est 00h00 UTC, la représentation équivalente sur 12 heures est 00h00. Toutefois, le code ne définit pas le fuseau horaire pour « working2 », ce qui entraîne l'utilisation du fuseau horaire système par défaut. Dans ce cas, le fuseau horaire du système peut ne pas s'aligner sur UTC, ce qui entraînera un résultat incorrect.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn