繁体   English   中英

如何在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开始,您不需要添加偏移量。

只需从06迭代循环:

 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM