我有today = new Date();
对象。我需要获取本周的第一天和最后一天。我需要周日和周一的两个变体作为一周的开始和结束日。我现在对代码有点困惑。你能帮我吗?
如何在 JavaScript 中获取本周的第一天和最后一天
IT技术
javascript
date
2021-02-07 05:31:48
6个回答
var curr = new Date; // get current date
var first = curr.getDate() - curr.getDay(); // First day is the day of the month - the day of the week
var last = first + 6; // last day is the first day + 6
var firstday = new Date(curr.setDate(first)).toUTCString();
var lastday = new Date(curr.setDate(last)).toUTCString();
firstday
"Sun, 06 Mar 2011 12:25:40 GMT"
lastday
"Sat, 12 Mar 2011 12:25:40 GMT"
这适用于本周的第一天 = 周日和本周的最后一天 = 周六。将它扩展到周一到周日运行是微不足道的。
让它在不同月份的第一天和最后一天工作留给用户练习
您还可以使用以下代码行获取一周的第一个和最后一个日期:
var curr = new Date;
var firstday = new Date(curr.setDate(curr.getDate() - curr.getDay()));
var lastday = new Date(curr.setDate(curr.getDate() - curr.getDay()+6));
希望它会很有用..
优秀(且不可变)的date-fns 库最简洁地处理了这个问题:
const start = startOfWeek(date);
const end = endOfWeek(date);
一周的默认开始日期是星期日 (0),但可以像这样更改为星期一 (1):
const start = startOfWeek(date, {weekStartsOn: 1});
const end = endOfWeek(date, {weekStartsOn: 1});
这是获取任何开始日的第一天和最后一天的快速方法。知道:
1 天 = 86,400,000 毫秒。
JS 日期值以毫秒为单位
食谱:计算出需要删除多少天才能获得一周的开始日(乘以 1 天的毫秒数)。之后剩下的就是添加 6 天以获得结束日。
var startDay = 1; //0=sunday, 1=monday etc.
var d = now.getDay(); //get the current day
var weekStart = new Date(now.valueOf() - (d<=0 ? 7-startDay:d-startDay)*86400000); //rewind to start day
var weekEnd = new Date(weekStart.valueOf() + 6*86400000); //add 6 days to get last day
其它你可能感兴趣的问题