javascript 如何获取上周星期一到上周星期日的经期

6psbrbz9  于 2023-04-28  发布在  Java
关注(0)|答案(2)|浏览(116)

如何使用JavaScript获取从上周的星期一到上周的星期日的日期
我试着在不同的来源中寻找资料,但是没有找到答案,希望他们在这里对我有所帮助

elcex8rz

elcex8rz1#

假设时区不是一个问题,你可以使用Date.prototype.setDate()首先获得上周的锚,然后使用getDay知道你在哪一天,通过锚点抵消,你可以获得周一和周日:

const today = new Date();

const oneWeekAgo = new Date(+today);
oneWeekAgo.setDate(today.getDate() - 7);
oneWeekAgo.setHours(0, 0, 0, 0); // Let's also set it to 12am to be exact

const daySinceMonday = (oneWeekAgo.getDay() - 1 + 7) % 7

const monday = new Date(+oneWeekAgo);
monday.setDate(oneWeekAgo.getDate() - daySinceMonday);

const sunday = new Date(+oneWeekAgo);
sunday.setDate(monday.getDate() + 6);

console.log(monday, sunday);
fhg3lkii

fhg3lkii2#

首先,让我们找到今天的日子。

const today = new Date();

然后我们就能知道今天是什么日子了

const dayOfWeek = today.getDay()

上面的内容将返回星期几,其中星期日= 0,星期六= 6。
有了这个,我们可以通过从一天中减去一周中的一天来回到上个星期日。

const lastSunday = new Date(today.getFullYear(), today.getMonth(), today.getDate() - dayOfWeek);

然后得到最后一个星期一,我们只需从这个日期减去6天。

const lastMonday = new Date(today.getFullYear(), today.getMonth(), today.getDate() - dayOfWeek - 6);

然后我们可以将日期转换为字符串

const lastMondayStr = lastMonday.toISOString().slice(0, 10);
const lastSundayStr = lastSunday.toISOString().slice(0, 10);

总的来说它看起来像这样

const today = new Date(); 
const dayOfWeek = today.getDay()
const lastSunday = new Date(today.getFullYear(), today.getMonth(), today.getDate() - dayOfWeek);
const lastMonday = new Date(today.getFullYear(), today.getMonth(), today.getDate() - dayOfWeek - 6);

const lastMondayStr = lastMonday.toISOString().slice(0, 10);
const lastSundayStr = lastSunday.toISOString().slice(0, 10); 

console.log('Period ' + lastMondayStr + ' - ' + lastSundayStr)

相关问题