Différence entre hh:mm et HH:mm

Voici mon code d'origine-

String dateString = "23 Dec 2015 1:4 PM";
Locale locale = new Locale("en_US");
SimpleDateFormat formatter = new SimpleDateFormat("dd MMM yyyy HH:mm a");
DateFormat df = new SimpleDateFormat("dd MMM yyyy HH:mm a", locale);
Date date = null;

try {
    date = formatter.parse(dateString);
} catch (ParseException e) {
    LOGGER.error(e);
}

String newDate = df.format(date);
System.out.println("oldDate = " + dateString);
System.out.println("newDate = " + newDate);

et voici mon résultat-

oldDate = 23 Dec 2015 1:4 PM
newDate = 23 Dec 2015 01:04 AM

Il est AM-PM différence entre les oldDate et newDate. Maintenant j'ai changé le DateFormat code-

SimpleDateFormat formatter = new SimpleDateFormat("dd MMM yyyy hh:mm a");
DateFormat df = new SimpleDateFormat("dd MMM yyyy hh:mm a", locale);

et j'obtiens le résultat escompté, qui est-

oldDate = 23 Dec 2015 1:4 PM
newDate = 23 Dec 2015 01:04 PM

Je suis conscient que HH signifie la 24 heures format et hh signifie la 12 heures format.

Ma question est

Si j'utilise HH:mm a au lieu de hh:mm a, ne devrait-il pas être de retour le temps dans de 24 heures format?

(ou)

Si la valeur par défaut est 12 heures format, il ne devrait pas revenir respectifs AM/PM marqueur en fonction de la date d'entrée prévue?

C'est juste pour ma compréhension.