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'));
@ 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});
};
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):
Option 2 (passeur combiné) :