[英]How to get Current week from given array of objects date in javascript
[英]How to get current week date in javascript?
我在 javascript 中获取当前星期日期时遇到问题。 我编写了以下代码来获取本周的日期,它运行良好,但似乎有时会返回下周的日期。 我不明白问题出在哪里。 任何帮助,将不胜感激。
这是我的代码:
let curr = new Date();
let week = [];
for (let i = 1; i <= 7; i++) {
let first = curr.getDate() - curr.getDay() + i;
let day = new Date(curr.setDate(first)).toISOString().slice(0, 10);
week.push(day);
};
console.log(week)
输出:
['2022-06-13', '2022-06-14', '2022-06-15', '2022-06-16', '2022-06-17', '2022-06-18', '2022-06-19']
但是今天的日期是6/12/2022
,但是上面的日期是从13/06/2022
开始的
来源: 这里
当您执行+i
时,您将数字 1 到 7 添加到您的first
变量。 现在由于一周从Sunday=0
开始,您不需要添加偏移量。
只需从0
到6
迭代循环:
let curr = new Date(new Date().getTime() - (7 * 24 * 60 * 60 * 1000)); let week = []; for (let i = 0; i < 7; i++) { let first = curr.getDate() - curr.getDay() + i; let day = new Date(curr.setDate(first)).toISOString().slice(0, 10); week.push(day); }; console.log(week)
[编辑] :如果您想从 7 天前开始,您可以更改初始化curr
变量的方式。
由此 :
let curr = new Date();
对此:
let curr = new Date(new Date().getTime() - (7 * 24 * 60 * 60 * 1000));
我使用getTime()
方法获取今天日期的纪元,并准确减去 7 天(或 1 周)内经过的毫秒数。
如果我正确理解您的问题,您必须考虑当日是星期天才能获得本周的第一天(星期一)。
let curr = new Date(); let week = []; for (let i = 1; i <= 7; i++) { let first = curr.getDate() - curr.getDay() + i; if (curr.getDay() === 0){ first = curr.getDate() - 6; } let day = new Date(curr.setDate(first)).toISOString().slice(0, 10); week.push(day); }; console.log(week)
从 0 开始 for 循环
像这样
let curr = new Date();
let week = [];
for (let i = 0; i < 7; i++) {
let first = curr.getDate() - curr.getDay() + I;
let day = new Date(curr.setDate(first)).toISOString().slice(0, 10);
week.push(day);
};
console.log(week)
请记住,如果您从 1 开始并将当前日期加 1,它将在明天返回,如果您将 0 加到今天,它将返回此日期。
您可以使用 moment.js 库
let week = []; let firstDayOfWeek = moment().startOf('week'); for (let i = 0; i < 7; i++) { week.push(moment(firstDayOfWeek).add(i, 'd')); }; console.log(week)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.20.1/moment.min.js"></script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.