Javascript Fois sans Date
J'ai besoin d'analyser et de manipuler à la Fois sans les Dates dans mon code. Par exemple je pourrais obtenir la chaîne de caractères "15:00" à partir d'un timepicker. Je veux la transformer en un objet de Temps d'une certaine sorte, - j'ai l'habitude de travailler en Python qui est distinct de la Date, Time, Datetime et de des objets.
Cependant, toutes les solutions que j'ai vu l'accent sur l'utilisation de l'objet Date. Ce ne peut pas analyser une chaîne comme "15:00", car il nécessite de la journée d'information. Je ne veux pas ajouter de la Date arbitraire de l'information à la Fois - en particulier depuis la Date apparaît à faire des hypothèses sur des choses comme l'heure d'été selon le jour et l'endroit, et il semble y avoir un risque de automatiquement de tenter de traduire le temps en un endroit donné. En outre, je veux être en mesure d'ajouter des fois, par exemple "15:00 + 1 heure"
Quelle est la solution recommandée pour analyser et gérer "première" fois n'est pas associée à des dates?
- Si vous ne voulez pas écrire votre propre code pour le faire, il y a Moment.js ou Date.js.
- Je recommande d'écrire les quelques lignes que vous avez besoin pour que vous-même. Comme il n'y a pas de calendrier préoccupation, c'est simple.
- C'est ce que j'espérais éviter. Moment.js et Date.js à la fois l'accent sur DateTimes, pas de Temps, donc vous avez encore de la colle Date arbitraire de l'information à un Moment avant de pouvoir l'utiliser. Je peux imaginer qu'il n'est pas fondamentalement compliqué à mettre en place, mais je suis surpris de voir ce qui n'existe pas déjà.
- date inclut le temps tu sais, il suffit donc de travailler sur le 1/1/1970 et jetez les restes lorsque vous avez terminé. Ce n'est pas comme toutes les données supplémentaires info va ralentir le temps de la manipulation...
Vous devez vous connecter pour publier un commentaire.
Malheureusement, il n'y a pas une solution idéale. JavaScript n'a qu'un
Date
objet, ce qui est probablement mal nommé car il est vraiment une date+heure.Une chose que vous voudrez peut-être penser plus profondément - vous dites que vous voulez travailler avec seulement du temps, mais que voulez-vous dire un l'heure de la journée ou voulez-vous dire un durée de temps? Ce sont les deux, mais légèrement différents concepts.
Par exemple, vous avez dit que vous pourriez vouloir une opération comme "15:00 + 1 heure". Bien qu'il serait clairement être de 16:00 à l'autre. Mais que dire de "15:00 + 10 heures"? Il serait 25:00 si vous parlez d'une durée, mais il pourrait être la 01:00 si l'on parle de l'heure de la journée.
En fait, il pourrait pas être à 01:00, depuis pas tous les jours 24 heures en eux. Quelques jours ont 23, 23.5, 24.5, ou 25 heures, en fonction de votre fuseau horaire, et si l'heure d'été est en démarrage ou l'arrêt de ce jour-là. Ainsi, dans le temps de la journée contexte, vous avez probablement ne souhaitez inclure une date en particulier et de la zone dans votre calcul. Bien sûr, si vous parlez directement de 24 heures les jours, alors ce point n'est pas pertinent.
Si vous parlez durées - vous voudrez peut-être regarder de nouveau à moment.js, mais pas à la
moment
objet. Il y a un autre objet,moment.duration
. La référence est ici.Et enfin, vous pourriez envisager de la simple utilisation de javascript pour analyser les heures et les minutes à partir de la chaîne de temps comme des nombres. Manipuler les nombres, puis la sortie d'une chaîne de nouveau. Mais votre question semble que vous êtes à la recherche de quelque chose de plus réussi.
Date
oumoment
serait toujours une bonne idée. Si c'est toujours détaché (comme les heures d'un restaurant est ouvert chaque jour de la semaine), le bord de cas sont beaucoup plus difficile. Je ne sais pas de toute bonne bibliothèque js pour cette. désolé.Voici un moment.js solution pour 12 ou 24 heures:
http://momentjs.com/docs/#/parsing/string-formats/
J'ai fini par utiliser ce qui suit puisque j'étais déjà en utilisant
moment
dans mon application:Voir Moment de Chaîne+Format docs pour d'autres chaînes de format, vous pouvez utiliser.
J'ai dû le faire récemment pour un projet mais n'a pas vraiment besoin d'inclure moment.js la méthode que j'ai utilisé a été manuellement analyser le temps comme ceci:
Utiliser comme alternative starter si vous ne souhaitez pas utiliser le moment. Remarque: cet exemple utilise es6 syntaxe.