Moment.js добавить/вычесть дни, не влияя на исходную дату

Как вы добавляете или вычитаете дни до даты по умолчанию, используя moment.js?

Я пытаюсь получить начальные и конечные даты недели, как показано ниже:

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

При вызове endOfWeek я получаю ожидаемое значение. Однако моя проблема заключается в том, что startOfWeek переопределяется значением endOfWeek.

Я хотел получить значение как startOfWeek, так и endOfWeek

Ответ 1

Вам нужно всего лишь клонировать момент, прежде чем изменять его. Используйте либо current.clone().whatever..., либо moment(current).whatever.... Они оба делают то же самое.

Это необходимо, потому что моменты изменяемы.

Ответ 2

Вам нужно клонировать значение тока, а затем выполнять операции:

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

Ответ 3

Решила проблему, получив формат startOfWeek и сохранила его в переменной. Затем из новой переменной я конвертирую ее в экземпляр момента и отсюда получаю значение 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);

Теперь я могу одновременно получать как начальную, так и конечную даты недели.