var fromDate = new Date();
var toDate = new Date();
fromDate.setDate(fromDate.getDate() - 1);
toDate.setDate(fromDate.getDate() - 30);
现在当我打印formDate时正在打印 日期2018-07-31T05:33:46.399Z
现在,当打印toDate时,将进行打印 日期2018-08-01T05:33:46.399Z
当前日期是日期2018-08-01T06:00:46.921Z
所以我想知道Yesturday的日期和Yesturday日期的30天之前 如何不使用时间获取以前的日期
答案 0 :(得分:1)
setDate()
相对地设置日期。第一个代码段在您将日期设置为0
时起作用,这会将上个月的最后一个日期设置为date对象。根据文档
如果dayValue在月份的日期值范围之外,则
setDate()
将相应地更新Date对象。例如,如果为dayValue
提供了0,则日期将被设置为上个月的最后一天。
但是在第二个代码段中,您将日期设置为1
(31-30),这不会相对但绝对地设置日期,因为1是有效日期,并且不在外部范围。因此,您最终在1
中将日期设置为toDate
。
正确的方法是从toDate
中减去31(假设您希望7月1日),这将创建一个相对值(1-31 == -30),从而正确设置日期。 / p>
var formDate = new Date();
var toDate = new Date();
formDate.setDate(formDate.getDate() - 1);
toDate.setDate(toDate.getDate() - 31);
console.log(formDate, toDate);
答案 1 :(得分:-2)
您错过了31,而不是30
var formDate = new Date();
var toDate = new Date();
formDate.setDate(formDate.getDate() - 1);
toDate.setDate(toDate.getDate() - 31);
console.log(formDate);
console.log(toDate);