【问题标题】:How can I get the first and last day of the week crossing months in javascript [duplicate]如何在javascript中获得跨月的一周的第一天和最后一天[重复]
【发布时间】:2020-09-30 17:05:37
【问题描述】:

例如,星期一是 9 月 28 日,从星期一开始一周,星期日是 10 月 4 日。我怎样才能得到一周的第一天和最后一天?到目前为止,解决方案仅涵盖属于同一个月的日期。请帮忙。谢谢

【问题讨论】:

    标签: javascript


    【解决方案1】:

    您可以为此使用 date-fns 库:

    const start = startOfWeek(date);
    const end = endOfWeek(date);
    

    查看这些主题以获得更多解决方案:

    【讨论】:

    • 第一个话题链接很有帮助
    【解决方案2】:

    您想研究Date.getDay() 方法。这将返回一个从 0 到 6 的数字,表示星期几(星期日为 0)。

    作为一个函数,它可能如下所示:

    function getMonday(date){
      const originalDay = date.getDay();
      const monday = 1;
      const newDate = new Date(date);
      const delta = originalDay === 0 ? 1 : originalDay - monday;
      newDate.setDate(newDate.getDate() - delta);
      return newDate;
    }
    

    【讨论】:

    • 感谢您对我的帖子感兴趣。我现在已经解决了这个问题。非常感谢!:D
    【解决方案3】:

    您可以在开始日期的时间上添加一周并构造一个新日期:

    const DAY = 1000 * 60 * 60 * 24; // ms * seconds * minutes * hours
    const WEEK = DAY * 7;
    
    const today = new Date('2020-09-29');
    const nextWeek = new Date(today.getTime() + WEEK);
    
    console.log(nextWeek.toUTCString());

    然后根据需要对该日期进行加法或减法,以获得一周的第一天/最后一天。

    const DAY = 1000 * 60 * 60 * 24;
    const WEEK = DAY * 7;
    
    const today = new Date('2020-09-29');
    const nextWeek = new Date(today.getTime() + WEEK);
    
    const day = nextWeek.getDay(); // 0 sunday, 6 saturday
    
    const firstDay = new Date(nextWeek.getTime() - (day * DAY));
    const lastDay = new Date(nextWeek.getTime() + ((6 - day) * DAY));
    
    console.log(firstDay.toUTCString()); // monday
    console.log(lastDay.toUTCString()); // sunday

    【讨论】:

    • 感谢您对我的问题感兴趣。我现在已经解决了。再次非常感谢:D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-25
    • 1970-01-01
    • 1970-01-01
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多