2016-03-04 22 views
11

Jak dodawać lub odejmować dni do domyślnej daty przy użyciu pliku moment.js?moment.js dodać/odjąć dni bez wpływu na pierwotną datę

próbuję uzyskać daty rozpoczęcia i zakończenia tygodnia jak poniżej:

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

Dzwoniąc endOfWeek, jestem coraz oczekiwaną wartość. Jednak moim problemem jest to, że startOfWeek jest nadpisany przez wartość endOfWeek.

Chciałem uzyskać wartość zarówno startOfWeek i endOfWeek

+0

spróbować tej chwili '() dodać (7,„dzień”); '.Przejdź również przez to (http://momentjs.com/docs/#/manipulating/) – Raviteja

+0

to nadal przesłoni wartość startOfWeek – rniocena

+0

Czy możesz stworzyć [skrzypce] (https://jsfiddle.net) ? – Raviteja

Odpowiedz

-1

rozwiązać problem poprzez uzyskanie formatu startOfWeek i zapisanie go w zmiennej. Następnie z nowej zmiennej przekonwertuję ją na instancję momentu i stąd otrzymuję wartość 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); 

Jestem teraz w stanie uzyskać daty rozpoczęcia i zakończenia tygodnia w tym samym czasie.

+0

To nie zadziała. Zmienna 'startOfWeekConvert' jest ciągiem *, ponieważ utworzyłeś go z' format'. Dlatego nie ma funkcji "endOf". –

21

Wystarczy sklonować chwilę przed zmianą. Użyj albo current.clone().whatever... lub moment(current).whatever.... Obaj robią to samo.

Jest to konieczne, ponieważ momenty są zmienne.

+0

To jest poprawna metoda. – okkko

2

trzeba sklonować wartość prądu, a następnie wykonać operacje.

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); 
Powiązane problemy