moment.js ajouter/soustraire jours sans affecter la date originale

comment additionner ou soustraire des jours à une date par défaut en utilisant moment.js?

je vais essayer d'aller le début et date de fin de la semaine, comme ci-dessous:

const current = moment.tz('2016-03-04', 'America/Los_Angeles');
const startOfWeek = current.startOf('isoWeek').weekday(0);
const endOfWeek = current.endOf('isoWeek').weekday(6);

Lors de l'appel de endOfWeek, j'obtiens la valeur attendue. Cependant, mon problème est que startOfWeek est remplacé par le endOfWeek valeur.

je voulais obtenir la valeur de startOfWeek et endOfWeek

18
demandé sur rniocena 2016-03-04 08:33:50

3 réponses

il suffit de cloner le moment avant de le modifier. Utiliser current.clone().whatever... ou moment(current).whatever.... Ils font tous les deux la même chose.

C'est nécessaire parce que les moments sont mutable.

27
répondu Matt Johnson 2016-03-04 07:27:53

vous devez cloner la valeur de current et ensuite effectuer les opérations:

const current = moment.tz('2016-03-04', 'America/Los_Angeles');
const startOfWeek = current.clone().startOf('isoWeek').weekday(0);
const endOfWeek = current.endOf('isoWeek').weekday(6);
4
répondu Dixita 2016-12-07 11:00:53

résolu le problème en obtenant le format du startOfWeek et la sauvegarde dans une variable. Puis à partir de la nouvelle variable, je la convertis en une instance de moment et à partir de là, j'obtiens le endOfWeek valeur.

const current = moment.tz('2016-03-04', 'America/Los_Angeles');
const startOfWeek = current.startOf('isoWeek').weekday(0);

const startOfWeekConvert = startOfWeek.format('YYYY-MM-DD');

const endOfWeek = startOfWeekConvert.endOf('isoWeek').weekday(6);

je suis maintenant en mesure d'obtenir les dates de début et de fin de la semaine en même temps.

-1
répondu rniocena 2016-03-04 06:28:30