Disons que j'ai une chaîne J'ai examiné les packages NPM Je suppose que vous pourriez faire une regexp? p> 1h 30m 4s code>. Comment j'utiliserais nœud.js pour analyser cette chaîne dans (évidemment) une heure à l'avenir à partir de la date à laquelle il a été exécuté? P>
date-fns code> et
MOMENT code> mais ils ne semblent pas satisfaire à ce que je cherche. p>
4 Réponses :
Vous devinez correctement. Pour une référence future, vous êtes susceptible d'obtenir de meilleures réponses si vous essayez de résoudre le problème vous-même et postez un Exemple minimal, complet et vérifiable A > De tout que vous avez des problèmes avec. Venir sur la pile débordement et poser une question est plus de travail que Googling 'JavaScript Regex' après tout, pour toutes les personnes concernées. P> var date = new Date();
var s = '1hr 30m 4s';
var re = /((\d+)hr)?( (\d+)m)?( (\d+)s)?/m;
var match = re.exec(s);
if (match != null) {
if (typeof(match[2]) !== 'undefined') {
date.setHours( date.getHours() + parseInt(match[2]) );
}
if (typeof(match[4]) !== 'undefined') {
date.setMinutes( date.getMinutes() + parseInt(match[4]) );
}
if (typeof(match[6]) !== 'undefined') {
date.setSeconds( date.getSeconds() + parseInt(match[6]) );
}
}
console.log(date);
Vous devriez probablement rendre les espaces avant les minutes / secondes facultatives pour gérer les intervalles sans toutes les trois parties, par exemple "5m 1s" code>
Depuis que vous avez mentionné le moment.js, je recommanderais d'utiliser leur Durations avec un Intervalle de temps ISO 8601 format, c'est-à-dire "PT1H30M4S".
Ce format peut être analysé non seulement par moments.js mais de nombreuses autres langues et bibliothèques (Hourra pour les normes). P>
Votre chaîne actuelle n'est pas trop loin et peut être transformée assez facilement. P>
Par exemple p>
p>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.23.0/moment.min.js"></script>
Vous pouvez faire quelque chose dans les lignes de:
p>
var d="1hr 30m 4s" var ds =d.split(/hr |m |s/) var dnow=new Date() var dlater= new Date() dlater.setTime( dnow.getTime() + ( ds[2]*1 + ds[1]*60 + ds[0]* 3600) * 1000) console.log("now",dnow); console.log("later",dlater);
"Je suppose que vous pourriez faire une regexp" i> 👈 non, vous