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 :
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.
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.
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!