我想在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;
}
答案 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);
你可以在这里看到一个例子