Moment: Question : Comment régler au mieux l'heure d'un moment déjà instancié sans avoir à régler individuellement les heures et les minutes ?

Créé le 16 févr. 2015  ·  6Commentaires  ·  Source: moment/moment

Supposons que vous ayez déjà un moment et une chaîne de temps distincte, quelle est la meilleure façon de définir le moment avec le temps donné sans avoir à diviser la chaîne de temps en morceaux ou à créer un autre moment ? Fondamentalement, quelque chose comme une fonction setTime() où vous fournissez le format d'entrée.

var d1 = moment(options.maxTime, 'HH:mm');
var d2 = moment(datetime.currentTime);
//d2 = d2.setTime(options.maxTime, 'HH:mm');
d2 = d2.hour(d1.get('hour'));
d2 = d2.minute(d1.get('minutes'));

Commentaire le plus utile

@ u01jmg3 eh bien, il n'y a pas d'API setTime() pour modifier les propriétés d'un moment déjà créé, vous devrez utiliser les setters.
Voici vos options :
Option 1 (identique à ce que vous avez mentionné ci-dessus, utilisez des setters individuels):

 d2 = d2.hour(d1.get('hour'));
d2 = d2.minute(d1.get('minute')); 

Option 2 (passeur combiné) :

d2 = d2.set({
           'hour' : d1.get('hour')
           'minute'  : d1.get('minute'), 
           'second' : d1.get('second')
        });

Tous les 6 commentaires

@ u01jmg3 eh bien, il n'y a pas d'API setTime() pour modifier les propriétés d'un moment déjà créé, vous devrez utiliser les setters.
Voici vos options :
Option 1 (identique à ce que vous avez mentionné ci-dessus, utilisez des setters individuels):

 d2 = d2.hour(d1.get('hour'));
d2 = d2.minute(d1.get('minute')); 

Option 2 (passeur combiné) :

d2 = d2.set({
           'hour' : d1.get('hour')
           'minute'  : d1.get('minute'), 
           'second' : d1.get('second')
        });

Merci de clarifier

Une possibilité d'avoir un tel appel d'API ? Serait-ce utile ?

Rien dans le pipeline pour l'instant, ne peut être examiné s'il y a vraiment un cas d'en avoir besoin.
Car les setters semblent suffire dans la plupart des cas.

:+1:

virgule manquante à d1.get('heure')
devrait être:
d2 = d2.set({ 'hour' : d1.get('hour'), 'minute' : d1.get('minute'), 'second' : d1.get('second') });

Vous pouvez toujours ajouter votre propre assistant si nécessaire :

const moment = require('moment-timezone');
const proto = Object.getPrototypeOf(moment());

/**
 * Set time helper, accepts time string like HH:mm
 */
proto.setTime = function(time) {
  const [hour, minute] = time.split(':');
  return this.set({hour, minute});
};
Cette page vous a été utile?
0 / 5 - 0 notes