js根据当前月取得历史或未来月份集合

本文提供了一个JavaScript脚本,用于从当前月开始,计算并获取历史月份和未来月份的集合,包括年份和月份的调整逻辑。

从当前月开始,取历史月时,计算因子为12,每取一次减1,判断为0时,把年份减1,月份还原到12,再推后推;

从当前月开始,取未来月时,计算因子为12,每取一次加1,判断为13时,把年份加1,月份还原到12,再往前推。


<script type="text/javascript">
	//根据当前月,取得历史月份集合(从当前月前推:历史)
            function complementHistoryDate(numMonth) {
                var complDate = [];
                var curDate = new Date();
                var y = curDate.getFullYear();
                var m = curDate.getMonth() + 1;
                //第一次装入当前月(格式yyyy-mm)
                complDate[0] = y + "-" + (m.toString().length == 1 ? "0" + m : m);
                m--;
                //第一次已经装入,numMonth少计算一次
                for (var i = 1; i < numMonth; i++, m--) {
                    if (m == 0) {
                        //到1月后,后推一年
                        y--;
                        m = 12; //再从12月往后推
                    }
                    complDate[i] = y + "-" + (m.toString().length == 1 ? "0" + m : m);
                }
                return complDate;
            }

            //根据当前月,取得未来月份集合(从当前月后推:未来)
            function complementFutureDate(numMonth) {
                var complDate = [];
                var curDate = new Date();
                var y = curDate.getFullYear();
                var m = curDate.getMonth() + 1;
                //第一次装入当前月(格式yyyy-mm)
                complDate[0] = y + "-" + (m.toString().length == 1 ? "0" + m : m);
                m++;
                //第一次已经装入,numMonth少计算一次
                for (var i = 1; i < numMonth; i++, m++) {
                    if (m == 13) {
                        //到12月后,前推一年
                        y++;
                        m = 1; //再从1月往前推
                    }
                    complDate[i] = y + "-" + (m.toString().length == 1 ? "0" + m : m);
                }
                return complDate;
            }
</script>


可以使用 JavaScript 中的 Date 对象一些简单的算法来实现获取当前月份所有周的范围。 以下是实现的代码示例: ```javascript // 获取当前月份 const currentMonth = new Date().getMonth() + 1; // 获取当前月份的第一天最后一天 const firstDay = new Date(new Date().getFullYear(), currentMonth - 1, 1); const lastDay = new Date(new Date().getFullYear(), currentMonth, 0); // 获取当前月份的总天数 const totalDays = lastDay.getDate(); // 获取当前月份的所有周范围 const weeks = []; let weekStart = null; let weekEnd = null; for (let i = 1; i <= totalDays; i++) { const currentDate = new Date(new Date().getFullYear(), currentMonth - 1, i); const currentDay = currentDate.getDay(); if (currentDay === 1 || i === 1) { // 当前为周一者为当的第一天,则为一个新的周开始 weekStart = i; } if (currentDay === 0 || i === totalDays) { // 当前为周日者为当的最后一天,则为一个周结束 weekEnd = i; weeks.push({ start: weekStart, end: weekEnd }); } } console.log(weeks); ``` 这段代码会输出一个包含当前月份所有周范围的数组。例如,在当前月份为 7 (July)时,输出结果可能如下所示: ```javascript [ { start: 1, end: 4 }, { start: 5, end: 11 }, { start: 12, end: 18 }, { start: 19, end: 25 }, { start: 26, end: 31 }, ] ``` 每个数组元素表示一个周范围,其中 `start` 表示该周的第一天,`end` 表示该周的最后一天。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值