момент. js добавляется в массив - PullRequest
0 голосов
/ 29 января 2020

Я пытаюсь понять, почему содержимое объекта моей переменной добавляется в мой массив вместо фактического объекта Date

async function timeShift(dayWeek = 'weeks', num = 4) {
    console.log('Timeshift Start');
    formattedDate = moment(Date.parse(start_date))
    let apptStartArr = [formattedDate]
    let lastApptonArr = apptStartArr[apptStartArr.length - 1]
    i = 1
    while (lastApptonArr.isBefore(Date.now())) {
        newStart = lastApptonArr.add(num, `${dayWeek}`).toDate().getTime()
        apptStartArr.push(newStart)
        console.log(`${i}, ${newStart}`);
        i += 1
    }
    //Must pop the last array off and return
    console.log(apptStartArr);
    console.log(lastApptonArr);

    return lastApptonArr
}

Это приводит к следующему

[ moment("2020-01-30T13:00:00.000"),
  1568318400000,
  1570737600000,
  1573160400000,
  1575579600000,
  1577998800000,
  1580418000000 ]

Извините за небрежный код!

1 Ответ

1 голос
/ 29 января 2020

Это потому, что ваше первое значение является мгновенным объектом. вам нужно преобразовать это в отметку времени

let apptStartArr = [formattedDate]

Должно быть

let apptStartArr = [formattedDate.toDate().getTime()]

И если вы хотите, чтобы объекты Date вместо номера отметки времени не вызывали getTime()

let apptStartArr = [formattedDate.toDate()];

А

newStart = lastApptonArr.add(num, `${dayWeek}`).toDate();
...