daily-share icon indicating copy to clipboard operation
daily-share copied to clipboard

获取一年的自然周数组 (2020-7-16)

Open yaogengzhu opened this issue 4 years ago • 1 comments

获取一年的自然周数组

export function getWeeksList(years: number) {
    function formatDig(num: number){
        return num > 9 ? '' + num : '0' + num
    }
    
    function formatDate(mill: number){
        var y=new Date(mill);
        return formatDig(y.getMonth()+1) + '月' + formatDig(y.getDate()) + '日'
    }
    
    function* createWeeks(year: number): any{
        const ONE_DAY= 24 * 3600 * 1000
        let start=new Date(year,0,1)
        let end = new Date(year,11,31)
        let firstDay=start.getDay() || 7
        let lastDay=end.getDay() || 7
        let startTime = +start
        let endTime = startTime + (7-firstDay) * ONE_DAY
        let _endTime = +end - (7-lastDay) * ONE_DAY
        yield [startTime,endTime];
        startTime = endTime + ONE_DAY
        endTime = endTime + 7 * ONE_DAY;
        while (endTime < _endTime) {
            yield [startTime, endTime]
            startTime = endTime + ONE_DAY
            endTime = endTime + 7 * ONE_DAY
        }
        yield [startTime,+end];
    }
    let index=1
    let arr = []
    for(let i of createWeeks(years)){
        let start=i[0],
            end=i[1];
        // console.log(`第${formatDig(index++)}周 (${formatDate(start)}-${formatDate(end)})`) ;
        arr.push({
            label: `第${formatDig(index++)}周 (${formatDate(start)}-${formatDate(end)})`,
            value: index - 1
        })
    }
    
    return arr
}
[
  {
    "label": "第01周 (01月01日-01月05日)",
    "value": 1
  },
  {
    "label": "第02周 (01月06日-01月12日)",
    "value": 2
  },
  {
    "label": "第03周 (01月13日-01月19日)",
    "value": 3
  },
  {
    "label": "第04周 (01月20日-01月26日)",
    "value": 4
  },
  {
    "label": "第05周 (01月27日-02月02日)",
    "value": 5
  },
  {
    "label": "第06周 (02月03日-02月09日)",
    "value": 6
  },
  {
    "label": "第07周 (02月10日-02月16日)",
    "value": 7
  },
  {
    "label": "第08周 (02月17日-02月23日)",
    "value": 8
  },
  {
    "label": "第09周 (02月24日-03月01日)",
    "value": 9
  },
  {
    "label": "第10周 (03月02日-03月08日)",
    "value": 10
  },
  {
    "label": "第11周 (03月09日-03月15日)",
    "value": 11
  },
  {
    "label": "第12周 (03月16日-03月22日)",
    "value": 12
  },
  {
    "label": "第13周 (03月23日-03月29日)",
    "value": 13
  },
  {
    "label": "第14周 (03月30日-04月05日)",
    "value": 14
  },
  {
    "label": "第15周 (04月06日-04月12日)",
    "value": 15
  },
  {
    "label": "第16周 (04月13日-04月19日)",
    "value": 16
  },
  {
    "label": "第17周 (04月20日-04月26日)",
    "value": 17
  },
  {
    "label": "第18周 (04月27日-05月03日)",
    "value": 18
  },
  {
    "label": "第19周 (05月04日-05月10日)",
    "value": 19
  },
  {
    "label": "第20周 (05月11日-05月17日)",
    "value": 20
  },
  {
    "label": "第21周 (05月18日-05月24日)",
    "value": 21
  },
  {
    "label": "第22周 (05月25日-05月31日)",
    "value": 22
  },
  {
    "label": "第23周 (06月01日-06月07日)",
    "value": 23
  },
  {
    "label": "第24周 (06月08日-06月14日)",
    "value": 24
  },
  {
    "label": "第25周 (06月15日-06月21日)",
    "value": 25
  },
  {
    "label": "第26周 (06月22日-06月28日)",
    "value": 26
  },
  {
    "label": "第27周 (06月29日-07月05日)",
    "value": 27
  },
  {
    "label": "第28周 (07月06日-07月12日)",
    "value": 28
  },
  {
    "label": "第29周 (07月13日-07月19日)",
    "value": 29
  },
  {
    "label": "第30周 (07月20日-07月26日)",
    "value": 30
  },
  {
    "label": "第31周 (07月27日-08月02日)",
    "value": 31
  },
  {
    "label": "第32周 (08月03日-08月09日)",
    "value": 32
  },
  {
    "label": "第33周 (08月10日-08月16日)",
    "value": 33
  },
  {
    "label": "第34周 (08月17日-08月23日)",
    "value": 34
  },
  {
    "label": "第35周 (08月24日-08月30日)",
    "value": 35
  },
  {
    "label": "第36周 (08月31日-09月06日)",
    "value": 36
  },
  {
    "label": "第37周 (09月07日-09月13日)",
    "value": 37
  },
  {
    "label": "第38周 (09月14日-09月20日)",
    "value": 38
  },
  {
    "label": "第39周 (09月21日-09月27日)",
    "value": 39
  },
  {
    "label": "第40周 (09月28日-10月04日)",
    "value": 40
  },
  {
    "label": "第41周 (10月05日-10月11日)",
    "value": 41
  },
  {
    "label": "第42周 (10月12日-10月18日)",
    "value": 42
  },
  {
    "label": "第43周 (10月19日-10月25日)",
    "value": 43
  },
  {
    "label": "第44周 (10月26日-11月01日)",
    "value": 44
  },
  {
    "label": "第45周 (11月02日-11月08日)",
    "value": 45
  },
  {
    "label": "第46周 (11月09日-11月15日)",
    "value": 46
  },
  {
    "label": "第47周 (11月16日-11月22日)",
    "value": 47
  },
  {
    "label": "第48周 (11月23日-11月29日)",
    "value": 48
  },
  {
    "label": "第49周 (11月30日-12月06日)",
    "value": 49
  },
  {
    "label": "第50周 (12月07日-12月13日)",
    "value": 50
  },
  {
    "label": "第51周 (12月14日-12月20日)",
    "value": 51
  },
  {
    "label": "第52周 (12月21日-12月27日)",
    "value": 52
  },
  {
    "label": "第53周 (12月28日-12月31日)",
    "value": 53
  }
]

yaogengzhu avatar Jul 16 '20 09:07 yaogengzhu

获取最近一段时间

function getRecentlyDay(num = 1) {
  let data1 = [];

  function getDay(day) {
    var today = new Date();
    var targetday_milliseconds = today.getTime() + 1000 * 60 * 60 * 24 * day;
    today.setTime(targetday_milliseconds);
    var tYear = today.getFullYear();
    var tMonth = today.getMonth();
    var tDate = today.getDate();
    tMonth = doHandleMonth(tMonth + 1);
    tDate = doHandleMonth(tDate);
    // return tYear+"-"+tMonth+"-"+tDate; //年月日
    return tMonth + "-" + tDate; //月日
  }
  function doHandleMonth(month) {
    var m = month;
    if (month.toString().length == 1) {
      m = "0" + month;
    }
    return m;
  }
  function dsdd(e) {
    //拼接
    data1.splice(0); //请控之前的数据
    for (let i = 0; i < e; i++) {
      data1.push(getDay(-i)); //-i 代表之前  i代表将来
    }
  }
  dsdd(num)
  return data1
}

console.log(getRecentlyDay(5));

yaogengzhu avatar Sep 28 '22 07:09 yaogengzhu