3
votes

Ajouter les heures minutes au format hh: mm en utilisant le moment

J'utilise la bibliothèque de moments et depuis le front-end, je reçois du temps en HH: mm Je dois ajouter des heures et des minutes à l'heure actuelle en utilisant moment.

Supposons que j'obtienne 05:30 depuis le frontend et je dois ajouter à l'heure UTC actuelle. Comment puis-je faire cela en utilisant momentjs?

J'ai essayé mais je n'ai pas fonctionné

moment().add('05:30', 'HH:mm')


0 commentaires

5 Réponses :


3
votes

Moment a la propriété .add

moment (). add (1, 'day')

Référence: http://momentjs.com/docs/#/manipulating/add/

Pour la conversion vers un format spécifique :

moment().add({hours:5, minutes: 30}).format('HH:mm')


2 commentaires

@Profer Si vous obtenez déjà l'heure dans n'importe quel format, après avoir ajouté une durée, vous obtiendrez le même format. Ou vous pouvez d'abord ajouter une durée, puis la convertir dans un format spécifique.


@VLAZ Ouais, j'ai raté ça. Réponse mise à jour



3
votes

EDIT: @VincenzoC ci-dessus a fourni ce que je pense personnellement être la meilleure pratique. Cochez cette réponse uniquement comme alternative à la sienne.

Faites simplement:

let [hours, minutes] = '05:30'.split(':').map(Number);
console.log(hours);
console.log(minutes);

Comme suggéré dans la documentation officielle: http://momentjs.com/docs/#/manipulating/add/

Soit utiliser le littéral objet comme ci-dessus, ou utilisez le chaînage.

Si vous ne pouvez pas vous débarrasser de cette chaîne, acquérez simplement les heures et les minutes en divisant:

moment().add({
   hours: 5,
   minutes: 30
});


0 commentaires

9
votes

Vous pouvez créer une durée pour '05: 30 ' code> en utilisant moment.duration (String) et utilisez add (Duration) .

Comme l'indique la documentation sur la durée du moment, '05: 30 ' est une entrée valide pour moment.duration (chaîne) :

Depuis la 2.1.0 , moment prend en charge l'analyse des intervalles de temps de style ASP.NET. Les formats suivants sont pris en charge.

Le format est une chaîne heure, minute, seconde séparée par des deux-points comme 23:59:59 . Le nombre de jours peut être préfixé par un séparateur de points comme ceci 7.23: 59: 59 . Les secondes partielles sont également prises en charge 23: 59: 59.999 .

Voici un exemple en direct:

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
const result = moment().add( moment.duration('05:30') );
console.log( moment().format() );
console.log( result.format() );


4 commentaires

: O ... Eh bien, c'est malin! On dirait que c'est la meilleure pratique.


Bonjour VincenzoC J'ai ce format 0530 . Maintenant ça ne marche pas. Une idée?


0530 n'est pas dans périodes de temps de style ASP.NET pris en charge par moment, car il n'y a pas de deux-points ( Le format est une chaîne heure, minute, seconde séparés par deux-points ), vous devez ajouter votre propre logique pour traduire l'entrée en fonction de vos besoins. (par exemple var input = '0530'; var output = str.substring (0, 2) + ':' + str.substring (2) , mais il pourrait y avoir beaucoup de cas d'angle)


Salut Pouvez-vous répondre à ceci stackoverflow.com/questions/62383797/... Fondamentalement vice-versa de ci-dessus



1
votes
var t = '05:30';
var hours = parseInt(t.substr(0,2));
var minutes = parseInt(t.substr(3,5));
moment().add(hours,'hours').add(minutes,'minutes');

0 commentaires

0
votes

Essayez d'utiliser

moment.add(5,'hours').add(30,'minutes').format('HH:mm')

OU

moment (). add ({heures: 5, minutes: 30}). format ('HH: mm')


0 commentaires