2016-03-04 14 views
11

Come aggiungere o sottrarre giorni a una data predefinita utilizzando moment.js?momento.js aggiungi/sottrai giorni senza influire sulla data originale

io sto cercando di ottenere le date di inizio e di fine della settimana, come di seguito:

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

Quando si chiama endOfWeek, sto ottenendo il valore atteso. Tuttavia, il mio problema è che startOfWeek viene sostituito dal valore endOfWeek.

ho voluto ottenere il valore di entrambi startOfWeek e endOfWeek

+0

provare questo 'momento() aggiungere (7, 'giorni'); 'Anche attraverso [this] (http://momentjs.com/docs/#/manipulating/) – Raviteja

+0

questo è ancora prioritario sul valore di startOfWeek – rniocena

+0

Potresti creare un [fiddle] (https://jsfiddle.net) ? – Raviteja

risposta

-1

Risolto il problema ottenendo il formato del startOfWeek e salvandolo in una variabile. Quindi dalla nuova variabile, la converto in istanza di momento e da qui, ottengo il valore endOfWeek.

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); 

Ora sono in grado di ottenere contemporaneamente le date di inizio e di fine della settimana.

+0

Questo non funzionerà. La variabile 'startOfWeekConvert' è una * stringa *, perché è stata creata con' format'. Pertanto, non ha la funzione 'endOf'. –

21

Hai solo bisogno di clonare il momento prima di modificarlo. Utilizzare current.clone().whatever... o moment(current).whatever.... Entrambi fanno la stessa cosa.

Questo è necessario perché i momenti sono mutabile.

+0

Questo è il metodo corretto. – okkko

2

È necessario clonare il valore della corrente e quindi eseguire le operazioni di:.

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); 
Problemi correlati