js关于计算一年有几周,要求每周都要知道是几号到几号

时光泡烂了过往 2016-07-29 05:46:40
各位大大,碰到点小问题:需要写一个js来计算一年有多少周(这个已经完成),然后要求将每周具体到周一到周天具体是几年几月几号到几年几月几号(因为要涉及到sql语句的查询where判断)。
如2016年第一周:2016-01-01到2016-01-03
2016年第二周:2016-01-04到2016-01-11
涉及到近10年就行了
希望大家给个思路,有现成的js脚本更好了,

现在完成到这个样:
...全文
1930 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
scscms太阳光 2018-10-18
  • 打赏
  • 举报
回复
    var year = 2018 //选择年份
var lastDay = new Date(year + 1,0,0) // 一年的最后一天
var firstDay = new Date(year,0,1) // 一年的最后一天
var obj = {}
var index = 1
var day = new Date(year,1,1)
function formatDate(d){
return d.toLocaleDateString('zh-cn',{year: 'numeric', month: '2-digit',day: '2-digit'}).replace(/\//g,'-')
}
while (day < lastDay){
day.setDate(day.getDate() + 1)
if(day.getDay() === 6){
obj['第' + (index++) + '周'] = formatDate(firstDay) + ' 到 ' + formatDate(day)
firstDay = new Date(day.getTime() + 86400000)
}
}
if(day !== lastDay){
obj['第' + (index++) + '周'] = formatDate(firstDay) + ' 到 ' + formatDate(lastDay)
}
console.log(JSON.stringify(obj,null,' '))
qq_33605642 2018-10-17
  • 打赏
  • 举报
回复
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="UTF-8" />
</head>
<body>
<script>
'use strict';
function formatDig(num){
return num>9?''+num:'0'+num;
}
function formatDate(mill){
var y=new Date(mill);
let raws= [
y.getFullYear(),
formatDig(y.getMonth()+1),
formatDig(y.getDate()),
y.getDay()||7
];
let format=['年','月','日 星期'];
return String.raw({raw:raws},...format);
}
function* createWeeks(year){
const ONE_DAY=24*3600*1000;
let start=new Date(year,0,1),
end=new Date(year,11,31);
let firstDay=start.getDay()|| 7,
lastDay=end.getDay()||7;
let startTime=+start,
endTime=startTime+(7-firstDay)*ONE_DAY,
_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;
for(let i of createWeeks(2016)){
let start=i[0],
end=i[1];
console.log(`第${formatDig(index++)}周 ${formatDate(start)}-${formatDate(end)}`);
}
</script>
</body>
</html>
似梦飞花 2016-07-30
  • 打赏
  • 举报
回复

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta charset="UTF-8" />
</head>
<body>
<script>
    'use strict';
    function formatDig(num){
        return num>9?''+num:'0'+num;
    }
    function formatDate(mill){
        var y=new Date(mill);
        let raws= [
            y.getFullYear(),
            formatDig(y.getMonth()+1),
            formatDig(y.getDate()),
            y.getDay()||7
        ];
        let format=['年','月','日 星期'];
        return String.raw({raw:raws},...format);
    }
    function* createWeeks(year){
        const ONE_DAY=24*3600*1000;
        let start=new Date(year,0,1),
               end=new Date(year,11,31);
        let firstDay=start.getDay()|| 7,
                lastDay=end.getDay()||7;
        let startTime=+start,
                endTime=startTime+(7-firstDay)*ONE_DAY,
                _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;
    for(let i of createWeeks(2016)){
        let start=i[0],
                end=i[1];
        console.log(`第${formatDig(index++)}周 ${formatDate(start)}-${formatDate(end)}`);
    }
</script>
</body>
</html>
天际的海浪 2016-07-29
  • 打赏
  • 举报
回复
var year = 2016; var da = new Date(year,0,1); var n = 6-(da.getDay()+6)%7; da.setDate(da.getDate()+n);//首先算出这年的第一个星期日 alert(da.toLocaleString()); da.setDate(da.getDate()+7);//之后每次对日期加7就行了

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧