Même s'il s'agit d'une question ancienne, j'ai moi-même eu la même question récemment et j'ai trouvé une solution plus simple en utilisant des expressions régulières et la fonction de remplacement de chaîne de caractères comme autre alternative (pas besoin de bibliothèques js externes ou de dépendance à l'API d'internalisation ECMAScript) :
var d = new Date();
var localeTime = d.toLocaleTimeString();
var localeTimeSansSeconds = localeTime.replace(/:(\d{2}) (?=[AP]M)/, " ");
Cette approche utilise une regex look-ahead pour saisir la fin de la chaîne :ss AM/PM et remplace la partie :ss par un espace, en renvoyant le reste de la chaîne inchangée. (Littéralement : "Trouvez un deux-points avec deux chiffres et un espace qui est suivi de AM ou PM et remplacez le deux-points, les deux chiffres et l'espace par un simple espace).
Cette expression/approche ne fonctionne que pour les Locales en-US et en-US-like. Si vous souhaitez obtenir un résultat similaire avec, par exemple, l'anglais britannique (en-GB), qui n'utilise pas AM/PM, une expression régulière différente est nécessaire.
Sur la base de l'exemple de sortie de l'auteur de la question initiale, je suppose qu'il s'agissait principalement d'un public américain et du schéma horaire en-US.