250 votes

Comment utiliser .toLocaleTimeString() sans afficher les secondes ?

J'essaie actuellement d'afficher l'heure de l'utilisateur sans afficher les secondes. Existe-t-il un moyen d'y parvenir en utilisant la fonction .toLocaleTimeString() de Javascript ?

Faire quelque chose comme ça :

var date = new Date();
var string = date.toLocaleTimeString();

affichera l'heure de l'utilisateur avec chaque unité, par exemple, il affiche actuellement 3:39:15 PM. Puis-je afficher la même chaîne, mais sans les secondes (par exemple 3:39 PM) ?

-6voto

Emu Points 1

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.

-7voto

bradley Points 113

Il suffit de convertir la date en une chaîne de caractères, puis de concaténer les sous-chaînes que vous voulez en retirer.

let time = date.toLocaleTimeString();
console.log(time.substr(0, 4) + time.substr(7, 3))
//=> 5:45 PM

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X