【发布时间】:2018-07-04 18:17:50
【问题描述】:
我需要计算最后一个周末之前的最后一个星期一的日期。使用了我认为最常见的 Stack Overflow 建议后,我得到了以下代码:
const getDayOfTheWeek = () => {
let date = new Date();
let clonedDate = new Date(date.getTime());
console.log(clonedDate);
const dow = clonedDate.getDay();
console.log(dow);
const offset = dow+6;
console.log(offset);
const newDate = new Date(clonedDate.setDate(clonedDate.getDate() - offset));
console.log(newDate);
const newNewDate = new Date(newDate.getTime());
console.log(newNewDate);
const day = newNewDate.getDate();
const month = newNewDate.getMonth();
const year = newNewDate.getYear();
console.log('the year is ',year, 'the month is ', month);
}
getDayOfTheWeek();
它返回 118 的年份和 5 的月份,这不是我需要的那个星期一。另一方面,newNewDate 是最后一个星期一。我想知道是什么原因造成的。我知道有太多不需要的重新分配。请帮忙。
【问题讨论】:
-
为什么需要复制日期?在创建
clonedDate之后,您没有使用date,在创建newDate之后,您也没有使用clonedDate,在创建newNewDate之后,您也没有使用newDate。但无论如何,调用new Date总是会创建一个新的日期对象,所以可以肯定的是,这会“克隆”日期(使用术语“深度”克隆没有意义,因为日期不包含其他值)。 -
它似乎可以解释 118 年。
-
一点也不:
new Date().getYear() // 118。这就是getYear的工作原理:“对于大于或等于 2000 的年份,getYear() 返回的值是 100 或更大。例如,如果年份是 2026,则 getYear() 返回 126。” i> developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… -
你应该改用
getFullYear()。 -
还有 5 个月?
标签: javascript date