-3

我有以下功能:

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

}

我尝试从当前日期开始加/减几天。想法是在当前日期添加 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);
    }
}
4

1 回答 1

2

您将 7 天添加到currentDate在线:

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);
于 2018-04-17T16:42:40.203 回答