Javascript 日历,以周分隔的日期列表

Javascript 日历,以周分隔的日期列表,javascript,Javascript,如何在纯Javascript中生成按周分组的天数列表/数组?如“周”-在邮件日历中显示 这应该是最终输出 <ul> ... <li id="currrentWeek" data-week-nr="51"> <div class="today" data-day="1" data-dayOfMonth="19">monday</div> <div data-day="2" data-dayOfMonth="20">

如何在纯Javascript中生成按周分组的天数列表/数组?如“周”-在邮件日历中显示

这应该是最终输出

<ul>
  ...
  <li id="currrentWeek" data-week-nr="51">
    <div class="today" data-day="1" data-dayOfMonth="19">monday</div>
    <div data-day="2" data-dayOfMonth="20">tuesday</div>
    <div data-day="3" data-dayOfMonth="21">wednesday</div>
    <div data-day="4" data-dayOfMonth="22">thursday</div>
    <div data-day="5" data-dayOfMonth="23">friday</div>
    <div data-day="6" data-dayOfMonth="24">saturday</div>
    <div data-day="0" data-dayOfMonth="25">sunday</div>
  </li>
  <li id="nextWeek" data-week-nr="52">
    <div data-day="1" data-dayOfMonth="26">monday</div>
    <div data-day="2" data-dayOfMonth="27">tuesday</div>
    <div data-day="3" data-dayOfMonth="28">wednesday</div>
    <div data-day="4" data-dayOfMonth="29">thursday</div>
    <div data-day="5" data-dayOfMonth="30">friday</div>
    <div data-day="6" data-dayOfMonth="31">saturday</div>
    <div data-day="0" data-dayOfMonth="01">sunday</div>
  </li>
  ...
</ul>
    ...
  • 星期一 星期二 星期三 星期四 星期五 星期六 星期日
  • 星期一 星期二 星期三 星期四 星期五 星期六 星期日
  • ...

谢谢你

哦,太酷了,上周我碰巧写了(有点)难看的代码:

// let's start with a function that gives us all weeks in a range
function* weeks(from, to = new Date()) {
  for (var f = from.getTime(); f <= to; f += 1000 * 60 * 60 * 24 * 7) {
    let d = new Date(f);
    while (d.getDay() === 0 || d.getDay() === 6) {
      d = new Date(d.getTime() + 1000 * 60 * 60 * 24);
     }
     yield d;
  }
}
现在,让我们检查几天在几周的特定范围内

 function* groupByWeek(dates) {
   for(const week of weeks(earliestDate(dates))) {
     const fromWeek = dates.filter(x => x < week); 
     dates = dates.filter(x => !fromWeek.includes(x));
     yield dates; 
   }
 }
function*groupByWeek(日期){
用于(每周的施工周(最早日期))){
const fromWeek=dates.filter(x=>x!fromWeek.includes(x));
生产日期;
}
}

您可以使用
Array.from
将其作为数组返回

哦,太酷了,上周我碰巧写了(有点)难看的代码:

// let's start with a function that gives us all weeks in a range
function* weeks(from, to = new Date()) {
  for (var f = from.getTime(); f <= to; f += 1000 * 60 * 60 * 24 * 7) {
    let d = new Date(f);
    while (d.getDay() === 0 || d.getDay() === 6) {
      d = new Date(d.getTime() + 1000 * 60 * 60 * 24);
     }
     yield d;
  }
}
现在,让我们检查几天在几周的特定范围内

 function* groupByWeek(dates) {
   for(const week of weeks(earliestDate(dates))) {
     const fromWeek = dates.filter(x => x < week); 
     dates = dates.filter(x => !fromWeek.includes(x));
     yield dates; 
   }
 }
function*groupByWeek(日期){
用于(每周的施工周(最早日期))){
const fromWeek=dates.filter(x=>x!fromWeek.includes(x));
生产日期;
}
}

您可以使用
Array.from
将其作为数组返回

我想你可以使用moment.js来帮助你:哦,酷,我上周碰巧为这篇文章写了(稍微)难看的代码,我将对它进行推广。我想你可以使用moment.js来帮助你做到这一点:哦,酷,我只是碰巧为这篇文章写了(稍微)难看的代码,我将对它进行推广。