J'essaie actuellement d'afficher l'heure de l'utilisateur sans afficher les secondes. Existe-t-il un moyen de le faire en utilisant .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. Suis-je capable d'afficher cette même chaîne, juste sans les secondes? (par exemple 15 h 39)
javascript
time
javadog36
la source
la source
hour: "2-digit"
ne fonctionne pas pour moi dans Chrome 42 ni FF 37 ---d = new Date(1429524912495).toLocaleTimeString('en-US', {hour: '2-digit', minute: '2-digit', hour12: true})
retourne"6:15 AM"
dans les deux.[]
pour omettre un paramètre régional spécifique. De cette façon, vous restez aux paramètres régionaux des utilisateurs:toLocaleTimeString([], {hour: '2-digit', minute: '2-digit'}
new Date().toLocaleTimeString([], {hour: '2-digit', minute:'2-digit', hour12: false}); "17:08"
Cela fonctionne pour moi:
la source
La valeur renvoyée par Date.prototype.toLocaleString dépend de l'implémentation, vous obtenez donc ce que vous obtenez. Vous pouvez essayer d'analyser la chaîne pour supprimer les secondes, mais cela peut être différent selon les navigateurs, vous devez donc tenir compte de chaque navigateur utilisé.
Créer votre propre format sans ambiguïté n'est pas difficile avec les méthodes Date. Par exemple:
la source
Avec les paramètres régionaux:
la source
J'ai également cherché une solution à ce problème, voici ce que j'ai finalement trouvé:
Vous pouvez l'essayer ici: http://jsfiddle.net/B5Zrx/
\ u200E est un caractère de formatage que j'ai vu sur certaines versions d'IE (c'est une marque Unicode de gauche à droite).
Je suppose que si le temps formaté contient quelque chose comme "XX: XX: XX" alors il doit être temps avec secondes et je supprime la dernière partie, si je ne trouve pas ce modèle, rien n'est changé. Assez sûr, mais il y a un risque de laisser des secondes dans certaines circonstances étranges.
J'espère juste qu'il n'y a pas de locale qui changerait l'ordre des parties de temps formatées (par exemple, faites-le ss: mm: hh). Cette marque de gauche à droite me rend un peu nerveux à ce sujet, c'est pourquoi je ne supprime pas la marque de droite à gauche (\ u202E) - je préfère ne pas trouver de correspondance dans ce cas et laisser le heure formatée en secondes dans ce cas.
la source
toLocaleTimeString()
retours qui peuvent ne pas être vraies pour tous les paramètres régionaux.Vous pouvez essayer ceci, qui répond à mes besoins.
ou
la source
:
.Voici une fonction qui le fera, avec des commentaires qui expliquent:
Puisque, comme d'autres l'ont noté, toLocaleTimeString () peut être implémenté différemment dans différents navigateurs, cette manière donne un meilleur contrôle.
Pour en savoir plus sur l'objet Javascript Date, voici une bonne ressource: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
la source
Je pense que la question originale peut facilement trouver une réponse avec quelque chose qui a été négligé jusqu'à présent: une simple fente de chaîne. L'heure renvoyée est une chaîne de texte, il suffit de la diviser sur le délimiteur ":" et de remonter la chaîne comme vous le souhaitez. Pas de plug-ins, pas de script compliqué. et voilà:
la source
Même s'il s'agit d'une question plus ancienne, j'ai eu la même question récemment et j'ai proposé une solution plus simple utilisant des expressions régulières et la fonction de remplacement de chaîne comme autre alternative (pas besoin de bibliothèques js externes ou de dépendance à l'API d'internalisation ECMAScript) :
Cette approche utilise un look-ahead regex pour saisir la fin: ss AM / PM de la chaîne et remplace la partie: ss par un espace, renvoyant le reste de la chaîne intact. (Dit littéralement "Trouvez un deux-points avec deux chiffres et un espace qui est suivi par AM ou PM et remplacez les deux points, deux chiffres et la partie d'espace par juste un espace).
Cette expression / approche ne fonctionne que pour les paramètres régionaux en-US et en-US-like. Si vous vouliez également 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'échantillon de sortie de l'interrogateur original, je suppose qu'ils traitaient principalement du public américain et du schéma temporel en-US.
la source
Convertissez simplement la date en chaîne, puis concaténez les sous-chaînes que vous souhaitez en extraire.
la source
toLocaleTimeString
renvoie une chaîne différente sur chaque navigateur en fonction des paramètres régionaux. Vous ne pouvez pas vous fier à ces positions, vous obtiendrez des résultats différents, probablement cassés, sur les navigateurs d'autres personnes.