获取当月最后一个星期日 - JavaScript

Pla*_*ark 2 javascript date

我来自欧洲,那里有夏天。两个日期之间每个日期+1 小时。这些日期是三月的最后一个星期六和十月的最后一个。我试图让我的程序自动实现夏季。为此,我必须得到一个月的最后一个星期日。

我发现了这个:java,但我无法将其翻译成JavaScript。

Sas*_*cha 5

要获取一个月的最后一个星期日,请为下个月的第一天创建一个新日期(因此取月份,因为在 JS 中月份是 0-11)。对于实际月份,您必须在 12:00 为上个月减去 1,为下个月加 1,以避免与夏季/冬季时间冲突。

获取工作日getDate(注意 Javascript 中的 0-6 是从星期日到星期六),如果这一天是星期日 (=0),则分配 7. 从下个月的第一天开始构建一个新日期,减去日差,然后设置将其作为新日期。通过使用这个技巧,您可以获得一个月的最后一个星期日。

如果您只想要日期而不是日期字符串,那么只需使用lastSunday.getDate().

注意:如果您使用日期对象,请考虑时间通常设置为 12:00,但通过 sumer/wintertimechange,它可能是 11:00 或 13:00。但这并不重要,因为您只需要日期而不是时间。

function lastSunday(year, month) {
    var date = new Date(year,month,1,12);
    let weekday = date.getDay();
    let dayDiff = weekday===0 ? 7 : weekday;
    let lastSunday = date.setDate(date.getDate() - dayDiff);
    return date.toDateString();
}

for (let i=1; i<=12; i++) {
    console.log(lastSunday(2020,i));
}
Run Code Online (Sandbox Code Playgroud)