Comment faire pour arrondir le temps le plus proche quart d'heure en JavaScript?
Par exemple:
Given time: 08:22 => Rounded to: 08:15
Given time: 08:23 => Rounded to: 08:30
Devrait être assez simple. Mais tout ce que j'étais capable de produire est long, pas très bon code pour résoudre le problème. Mon esprit est juste allé vide.
Ce qui concerne
- plus simple la réponse ici: stackoverflow.com/questions/10789384/...
Vous devez vous connecter pour publier un commentaire.
Étant donné que vous avez des heures et des minutes en les variables (si vous n'en avez pas, vous pouvez les obtenir à partir de la
Date
instance de toute façon en utilisantDate
instance fonctions):minutes peut ainsi être calculé à l'aide de
Math.round()
:ou de le faire en javascript-expression sophistiquée, sans fonctions:
Vous pouvez vérifier l'jsPerf test qui montre
Math.round()
est le plus lent des trois surtout la dernière étant la plus rapide, comme c'est juste une expression sans appels de fonction (pas d'appel de fonction, les frais généraux à savoir manipulation de la pile, bien que les fonctions natives peuvent être traités différemment dans la VM Javascript).//----
++hours
plutôt quehours++
? Comme dans sa forme actuellehour
est incrémenté APRÈS que la ligne s'exécute, ce qui signifie que leh
variable est l'onu-incrémenté/valeur incorrecte.var h = minutes > 52 (23 === hours ? 0 : hours + 1) : hours
Cette fonction rond le temps le plus proche quart d'heure.
Avec Le Temps De Chaîne
Voici une méthode qui va autour d'une chaîne de temps comme celui que vous avez présenté. Par exemple, "08:22"
Avec les Heures et les Minutes Déjà Scindée
Vous pouvez utiliser cette méthode si vous n'avez pas besoin d'analyser l'heure et les minutes des chaînes de caractères comme votre exemple montre
Existants De L'Objet Date
Ou, si vous cherchez à tour un objet date la plus proche de x minutes, vous pouvez utiliser cette méthode.
Si vous ne lui donnez pas n'importe quelle date il sera tour à l'heure actuelle. Dans votre cas, vous pouvez arrondir le plus proche est à 15 minutes.
Le code ici est un peu verbeux, mais je suis sûr que vous verrez comment vous pouvez combiner les lignes pour faire de cette plus courte. J'ai laissé cela de cette façon à montrer clairement les étapes:
Diviser par 9e5 millisecondes (15 * 60 * 1000), ronde, et de multiplier le dos par 9e5 :
JS:
Il y a un Package NPM
@qc/date-round
qui peuvent être utilisés. Étant donné que vous avez unDate
exemple être arrondiEnsuite, vous pouvez utiliser
date-pn
pour formater la dateUn autre avec date-pn (pas obligatoire)
Pourrait aider les autres. Pour n'importe quelle langue. Principalement truc avec la fonction round.
E. g. L'intervalle pourrait être de 5 minutes, 10 minutes, 15 minutes, 30 minutes.
Puis arrondis minutes peut être remis à zéro à la date respective.
aussi, si nécessaire, alors
Simple?