JS 我现在可以做到知道一个月有几周,但是不知道各个周是几号到几号

得到一个月的第一周,第二周...。并且得到对应几号。有会的朋友给点思路吗。 我现在可以做到知道一个月有几周,但是不知道各个周是几号到几号

要实现的效果

现在自己做的进度

只能先提供一个思路给你具体怎么做你得自己去实施了好吧,首先这个问题,我们是不是首先确定每月的1号是星期几,确定第一周有几天,然后就能确定第一周有几天了,知道第一周是几月几号后面就很简单了,对吧,,先找一个基准日期比如2017年10月1号正好是周日,然后我们算出基准月到当月的1号是多少天,用这个数字减去几能被7整除,然后推出这个月1号是星期几就OK了(比如10月1号到11月1号是31天,31除以7是4点几所以4*7=28,因此31-3=28,那就是周日开始第三天,就是周三了,或者,本周还剩四天那就是11月1号~11月4号)

各个周是几号到几号 这个首先你要知道是哪年的哪个月份 (其实你这个就是一个伪需求,实际就是需要一个日历) 这个你完全可以去改一个日历代码 就能额得到你需要的东西

你只要知道这个月1号是星期几不就ok???然后 每周+7天 最后一个星期就是31-4-7-7-7

 <%--
  Created by IntelliJ IDEA.
  User: qqg
  Date: 2017/10/11
  Time: 10:31
  To change this template use File | Settings | File Templates.
--%>
<%@ page language="java" contentType="text/html; charset=utf-8"
         pageEncoding="utf-8"%>
<%
    String path = request.getContextPath();
    HttpSession s = request.getSession();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<html>
<head>
    <title>Title</title>
    <script type="text/javascript" src="/js/jquery.min.js"></script>
</head>
<body>
    <script>
        /**
         * 获取当前时间
         */
        function p(s) {
            return s < 10 ? '0' + s: s;
        }

        //根据时间获取当前月的周数,每周的周日为一周的开始
        function getWeekByMonth(date) {

            var y = date.getFullYear();
            var m = date.getMonth()+1;//月份 0 - 11 ,0代表 1 月
            var d = date.getDate();
            var now2 =y+'-'+p(m)+"-"+p(d);

            //获取本月1号对应的周数
            var monOneWeek = new Date(y,m-1,1);
            var week = monOneWeek.getDay();
            //获取本月的天数
            var monOneDay = new Date(y,m,1);
            var date_count =   (new Date(monOneDay.getTime()-1000*60*60*24)).getDate();

            var days = date_count;
            var mod = 7 - week;
            var count = 1;
            var start = 1;  //起始日期 1 号开始
            var s = "" , ss = "";
            var end = start + mod - 1;//截止日期
            while (days >= 0){
                //var end = start + 6;
                end = end > date_count ? date_count : end ;
                s += "第" + count + "周:" +y+"年"+p(m)+"月"+"("+p(start)+"-"+p(end)+");"+"\n";
                start = end + 1;
                end += 7;
                days -= 7;
                ss += days + ",";
                count ++;
            }
            return s;
        }
        function getData() {
            //alert(p(m)+"周:"+week+"天数:"+date_count);
            //测试月份
            //2017年2月1日
            var date2 = new Date(2017,1,1);
            //2017年1月1日
            var date1 = new Date(2017,0,1);
            //2017年3月1日
            var date3 = new Date(2017,2,1);
            //2017年10月1日
            var date10 = new Date(2017,9,1);
            //2017年11月1日
            var date5 = new Date(2017,10,1);
            alert(getWeekByMonth(date5));

        }
    </script>
    <div ><button class="btn btn-success" onclick="getData();">测试</button> </div>
</body>
</html>

测试成功了。拿去运行,点击**测试**按钮,有你想要的结果。

谢谢各位,已经有思路了