使用 JavaScript 获取上周一的日期
JavaScript 中要获取前一个星期一的日期:
- 将 6 加到星期几,得到除以 7 的余数。
- 从当月的第几天中减去结果。
function getPreviousMonday(date = new Date()) {
const previousMonday = new Date();
previousMonday.setDate(date.getDate() - ((date.getDay() + 6) % 7));
return previousMonday;
}
// ?️ "Mon Jan 10 2022 15:45:00"
console.log(getPreviousMonday(new Date('2022-01-11')));
// ?️ "Mon Jan 03 2022 15:45:00"
console.log(getPreviousMonday(new Date('2022-01-09')));
我们创建了一个可重用的函数,它将 Date 对象作为参数并返回前一个星期一。
如果未提供参数,则该函数返回当前日期的前一个星期一。
setDate 方法允许我们更改特定 Date 实例的月份日期。
该方法采用一个整数来表示一个月中的第几天。
为了回到上周一,我们:
- 将 6 添加到星期几,例如 星期二 = 2 + 6 = 8。请注意,getDay() 方法返回星期日为 0、星期一为 1、星期二为 2 等的星期几。
- 使用模运算符得到除以 8 % 7 = 1 的余数。
- getDate() 方法返回一个月中的第几天,例如 11 – 1 = 10。
- 10 是前一个星期一所在月份的第几天。
我们创建了一个新的 Date() 对象并将其存储在 previousMonday 变量中以避免改变传入的 Date。
请注意,如果向函数传递的日期已经是星期一,它将按原样返回日期。
例如 2022-01-10 是星期一。
- 将 6 添加到凌晨的日期,例如 星期一 = 1 + 6 = 7。
- 得到余数 – 7 % 7 = 0。
- 并从该月的第几天中减去结果 – 10 – 0 = 10。
- 该方法返回一个存储同一星期一的新日期。
如果想重新设置Date的时间,将时、分、秒、毫秒设置为0,可以使用 setHours() 方法。
function getPreviousMonday(date = new Date()) {
const previousMonday = new Date();
previousMonday.setDate(date.getDate() - ((date.getDay() + 6) % 7));
// ?️ Reset hours, minutes, seconds, milliseconds to `0`
previousMonday.setHours(0, 0, 0, 0);
return previousMonday;
}
// ?️ "Mon Jan 10 2022 00:00:00"
console.log(getPreviousMonday(new Date('2022-01-12')));
我们传递给 setHours 方法的四个参数是小时、分钟、秒和毫秒。
这会将返回日期的时间重置为午夜。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布,任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站。本站所有源码与软件均为原作者提供,仅供学习和研究使用。如您对本站的相关版权有任何异议,或者认为侵犯了您的合法权益,请及时通知我们处理。