如何在TypeScript中从日期减去天数

时间:2017-10-28 01:26:37

标签: datetime typescript

我想在TypeScript中减去当前日期的天数。 例如,如果当前日期是2017年10月1日,我想减去1天到2017年9月30日,或者如果我想减去3天我会得到9月28日等。

这是我到目前为止,结果是我收到了1969年12月31日。我假设这意味着tempDate.getDate()返回零,如1970年1月1日的纪元。

这是我的代码,目标是返回上一个工作日。

    protected generateLastWorkingDay(): Date {

        var tempDate = new Date(Date.now());
        var day = tempDate.getDay();


        //** if Monday, return Friday
        if (day == 1) {
            tempDate = new Date(tempDate.getDate() - 3);
        } else if (1 < day && day <= 6) {
            tempDate = new Date(tempDate.getDate() - 1);
        }

        return tempDate;
    }

3 个答案:

答案 0 :(得分:2)

getDate返回月份的日期(1-31),因此从中创建新的Date会将该数字视为“自纪元以来的毫秒数”。

您可能想要的是使用setDate来更改自动处理的日期,直到数月/年为止。

protected generateLastWorkingDay(): Date {
  const lastWorkingDay = new Date(Date.now());

  while(!this.isWorkingDay(lastWorkingDay)) {
    lastWorkingDay.setDate(lastWorkingDay.getDate()-1);
  }

  return lastWorkingDay;
}

private isWorkingDay(date: Date) {
  const day = date.getDay();

  const isWeekday = (day > 0 && day < 6);

  return isWeekday; // && !isPublicHoliday?
}

答案 1 :(得分:2)

这就是我的做法

let yesterday=new Date(new Date().getTime() - (1 * 24 * 60 * 60 * 1000));
let last3days=new Date(new Date().getTime() - (3 * 24 * 60 * 60 * 1000));

我们需要从当前日期减去(no_of_days) * 24 * 60 * 60 * 1000

答案 2 :(得分:1)

你可以

const current = new Date()

然后

const numberOfDaysToSubstract= 3;

const prior = new Date().setDate(current.getDate) - numberOfDaysToSubstract);

你可以在这里看到一个例子

https://codepen.io/Jeysoon/pen/poNZRwd?editors=1112