返回指定月份的周列表 包含 周序号、开始日期、结束日期(不包含周末)

    /**
     * 返回当前年月的周列表 包含 周序号、开始日期、结束日期(不包含周末)
     * @param year          年
     * @param month  月
     * @returns {Array} 
     */
    function getYearMonthWeekList(year,month) {
            var weekList=[];
            var time = year + "/" + month + "/01";//取当前月的第一天
            var d= new Date(time)
            var dayfitst = parseInt(d.getDay());//得到这个月的第一天是星期几  0(周日) 到 6(周六) 
            var weekDate;//当前月的第一周的第一天  遇到跨月时 则选择上个月的最后一周的第一天
            if(dayfitst>1){//当前月第一天不是星期一 则往前退回至星期一
                    m=d.getMonth();
                    for(i=7;i>0;i--){
                            if(d.getDay()==1) {//退回到第一个星期一取出当前日期做为本月份的第一周的开始日期
                                    weekDate=d;
                                    break;
                            }
                            d.setDate(d.getDate()-1);
                    }    
            }else{
                    weekDate=d;
            }
            var weekStr="";
            for(i=0;;i++){
                    var weekObj={}
                    weekObj.no=i+1;
                
                    //开始日期
                    weekObj.startDate=weekDate.getTime();
                    weekStr=weekStr+weekDate.toLocaleDateString()+"~";
                    //结束日期
                    weekDate.setDate(weekDate.getDate()+4);
                    weekObj.endDate=weekDate.getTime();
                    weekObj.showTxt="第"+(i+1)+"周("+new Date(weekObj.startDate).toLocaleDateString()+"~"+new Date(weekObj.endDate).toLocaleDateString()+")";//周序号
                    weekList.push(weekObj);
                    //过滤周末
                    weekStr=weekStr+weekDate.toLocaleDateString()+"\r\n";
                    weekDate.setDate(weekDate.getDate()+3);
                    if(weekDate.getFullYear()>year||weekDate.getMonth()+1>month){//跨至下年或下月停止循环
                            break;
                    }
            }
            return weekList;
        }

 

转载于:https://www.cnblogs.com/kevin_wk/p/5708523.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、 首先打开 Power BI,在“开始”界面中选择一个新建的“空白查询”,并将其重命名为“日期表” 。 二、 在右侧实用程序面板中,单击“高级编辑器”按钮,打开“查询编辑器”窗口。 三、 在“查询编辑器”窗口中,输入以下代码,以生成日期表: let //设置开始日期结束日期 StartDate = #date(2021, 1, 1), EndDate = #date(2023, 12, 31), //计算天数 DaysCount = Duration.Days(EndDate - StartDate) + 1, //生成日期序列 DatesList = List.Dates(StartDate, DaysCount, #duration(1, 0, 0, 0)), //将日期序列转化为表格 DatesTable = Table.FromList(DatesList, Splitter.SplitByNothing(), {"日期"}, null, ExtraValues.Error), //增加列:年、季度、月、、星期 InsertYear = Table.AddColumn(DatesTable, "年", each Date.Year([日期]), type number), InsertQuarter = Table.AddColumn(InsertYear, "季度", each "Q" & Text.From(Date.QuarterOfYear([日期])), type text), InsertMonth = Table.AddColumn(InsertQuarter, "月", each Date.MonthName([日期]), type text), InsertWeek = Table.AddColumn(InsertMonth, "", each "W" & Text.PadStart(Text.From(Date.WeekOfYear([日期])), 2, "0"), type text), InsertWeekday = Table.AddColumn(InsertWeek, "星期", each Date.DayOfWeekName([日期]), type text), InsertDayNumber = Table.AddColumn(InsertWeekday, "序号", each Date.DayOfYear([日期]), type number) in InsertDayNumber 四、 单击“关闭和应用”按钮,关闭“查询编辑器”窗口。 五、 单击“日期表”查询的右上角,单击“加载”按钮,以将其加载到数据模型中。 通过以上步骤,就可以成功生成日期表,并包含了你所需的字段:序号日期、年、季度、月、、星期。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值