Javascript: convertit une chaîne de 24 heures sur 12 heures avec AM / PM et aucun fuseau horaire
Le serveur envoie une chaîne de caractères dans ce format: 18:00:00
. C'est un moment de la journée à la valeur indépendante de n'importe quelle date. Comment convertir 6:00PM
en Javascript? J'ai pu faire précéder la date d'aujourd'hui comme une chaîne de caractères à la valeur envoyée par le serveur et ensuite d'analyser les valeurs combinées et puis essayez de la .toTimeString()
méthode de l'objet Date, mais le format de l'époque méthode émet est de 24 heures de temps avec une seconde partie. Je pourrais écrire une fonction, mais est-il quelque chose de construit dans?
source d'informationauteur Tim
Vous devez vous connecter pour publier un commentaire.
Rien de construit dans, ma solution serait comme suit :
Cette fonction utilise une expression régulière pour valider la chaîne de temps et de le découper en ses éléments constitutifs. Notez également que les secondes dans le temps peut éventuellement être omis.
Si une période de validité a été présenté, il est ajusté par l'ajout de l'indication AM/PM et le réglage des heures.
La valeur de retour est le temps ajusté si une période de validité a été présentée ou la chaîne d'origine.
Voir jsFiddle : http://jsfiddle.net/ZDveb/
Pour obtenir AM/PM, Vérifier si la partie heure est à moins de 12 ans, puis elle est SUIS, d'autre PM.
Pour obtenir l'heure, ne
(hour % 12) || 12
.Cela devrait le faire:
http://jsfiddle.net/Skwt7/4/
Qui suppose que les AM le format des heures comme, par exemple,
08:00:00
. Si ils sont mis en forme sans le premier zéro, vous devez tester la position de la première du côlon:http://jsfiddle.net/Skwt7/3/
À la recherche de cette même question, j'ai rencontré plusieurs compliqué, difficile à comprendre, des solutions de, et puis il m'est apparu: Il y a une solution très simple qui ne repose pas sur dur à lire les expressions régulières ou autre code compliqué. Sauf que je suis absent quelque chose d'évident, c'est extrêmement simple, facile à comprendre solution:
Basé sur gilly3 de réponse.
Si vous voulez convertir:
Puis cela va fonctionner:
https://jsfiddle.net/fpjs9g0L/
En supposant que vous obtiendrez la chaîne de date dans un format approprié, j'ai une solution.
Assurez-vous que votre temps est dans ce format HH:MM:SS(PM/AM)
Je préfère tirer parti de la puissance du javascript natif objet Date, au lieu de compliquer les choses avec des expressions régulières et de validations.
Aussi, j'ai pensé qu'il valait mieux pour ajouter des zéros pour un chiffre d'heures.
J'ai écrit ce format-12h composant qui résout le problème comme je l'ai mentionné ci-dessus.
Vous pouvez avoir un coup d'oeil au code et des résultats de test.
Se sentir libres à l'importation et à l'utiliser comme le montrent ces exemples: