为什么 Date() returns 错误的日期?

Why Date() returns wrong date?

我有以下功能:

public static addDaysNextPrev(operation: number, date: Date = new Date(), days: number = 7): IDateCalendarNextPrev {
    const currentDate = new Date(date);
    const prevDate = new Date(date);

    currentDate.setDate(currentDate.getDate() + (days * operation));
    prevDate.setDate(currentDate.getDate() - (days * operation));
    console.log(prevDate);

}

我尝试 add/minus 从当前日期开始的几天。想法是将当前日期和 return 上一个日期和下一个日期相加 7 天。

参数 operation 是数字 1 或正数或负数,用于确定下一日期或上一日期的方向。

我总是排错日期:

console.log(prevDate);

这是我的第二个解决方案,更明显的是:

public static addDaysNextPrev(operation: boolean, date: Date = new Date(), days: number = 7): IDateCalendarNextPrev {
    let currentDate = new Date(date);
    let prevDate = new Date(date);

    if (operation) {
      prevDate = date;
      currentDate.setDate(currentDate.getDate() + days);
    } else {
      currentDate.setDate(date.getDate() - days);
      prevDate.setDate(currentDate.getDate() - days);
    }
}

您正在向 currentDate 添加 7 天:

currentDate.setDate(currentDate.getDate() + (days * operation));

并在行中减去 currentDate 的 7 天:

prevDate.setDate(currentDate.getDate() - (days * operation));

因此您的 prevDate 将具有与 currentDate 初始值相同的值。

此处更正:

let operation = 1;
let date: Date = new Date();
let days: number = 7

const currentDate = new Date(date);
const prevDate = new Date(date);

prevDate.setDate(currentDate.getDate() - (days * operation));

console.log(prevDate);