我试图弄清楚为什么将变量的对象内容添加到数组而不是实际的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 ]


对不起,草率的代码!

最佳答案

这是因为您的第一个值是一个矩对象。您需要将其转换为时间戳

let apptStartArr = [formattedDate]


应该

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


如果您要使用Date对象而不是时间戳号,请不要调用getTime()

let apptStartArr = [formattedDate.toDate()];




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

09-10 16:55