需求说明:一个月按7天算,周日到周六,会存在有的月份是4周,有的月份是5周。本需求是跨月的情况下,算周三在哪个月份,就算入哪个月份。

获取本月的总天数
function getMonthDayTotal(year,month){let nextMonth = month + 1;let d = new Date(year, nextMonth, 0);return d.getDate();
}获取本月最后一天是周几
function getMonthLastDayWeek(year,month) {let lastDay = getMonthDayTotal(year,month);let d = new Date(year, month, lastDay);return d.getDay();
}$('#dateTimePicker').datetimepicker({timeZone:'Asia/Seoul',autoclose:true,format: 'yyyy-mm',startView: 'year',minView:'year',
}).on('changeMonth',function (ev) {let getUTCFullYear = ev.date.getUTCFullYear();let getUTCMonth = ev.date.getUTCMonth();          //获取月份,0 到 11 之间的整数let getUTCDate = ev.date.getUTCDate();              //1 到 31 之间的整数let getUTCDay = ev.date.getUTCDay();                //获取当天是周几,0-6let curMonthDatTotal = getMonthDayTotal(getUTCFullYear,getUTCMonth);    //本月总共有多少天let preMonthDayTotal = getMonthDayTotal(getUTCFullYear,getUTCMonth-1);  //上个月总共有多少天,也就是上个月最后一天的日期判断本月1号是星期几,从而获取本月第一周的开始日期let firstWeekStartDate = '';             //本月第一周的开始日期let firstWeekEndDate = '';               //本月第一周的结束日期let monthDay = curMonthDatTotal;         //计算本月周数的有效天数if (getUTCDay == 0){//如果是星期日firstWeekStartDate = getUTCDate;firstWeekEndDate = 7;}else if(getUTCDay>3){//如果大于星期三即是(四、五、六),归上个月firstWeekStartDate = getUTCDate+7-getUTCDay;monthDay = curMonthDatTotal-firstWeekStartDate+1;firstWeekEndDate = firstWeekStartDate+6;}else{//小于等于星期三即是(一、二、三),取上个月firstWeekStartDate = preMonthDayTotal-getUTCDay+1;firstWeekEndDate = 7-getUTCDay;}let weekTotal = parseInt(monthDay/7);判断最后一天是星期几,从而获取本月的总周数let lastDayWeek = getMonthLastDayWeek(getUTCFullYear,getUTCMonth);if (lastDayWeek >= 3 && lastDayWeek < 6){weekTotal += 1;}let weekOption = '<option value="0" title=""></option>';for (let i=1;i<=weekTotal;i++){let j;let between;switch (i) {case 1:j="一";between = firstWeekStartDate + '~' + firstWeekEndDate;break;case 2:j="二";between = (firstWeekEndDate+1) + '~' + (firstWeekEndDate+7);firstWeekEndDate +=7;break;case 3:j="三";between = (firstWeekEndDate+1) + '~' + (firstWeekEndDate+7);firstWeekEndDate +=7;break;case 4:j="四";if (getUTCMonth == 1){//2月份特殊处理between = (firstWeekEndDate+1) + '~' + (7-lastDayWeek-1);}else{between = (firstWeekEndDate+1) + '~' + (firstWeekEndDate+7);firstWeekEndDate +=7;}break;case 5:j="五";between = (firstWeekEndDate+1) + '~' + (7-lastDayWeek-1);break;}weekOption += '<option value="'+i+'" title="第'+j+'周">第'+j+'周('+between+')</option>';}$('select[name="zhoushu"]').html(weekOption);});

效果如下:

js计算当月有几周并显示对应的日期相关推荐

  1. js计算一年有多少周(星期一为第一天)

    function getWeeks(year = 2022) {// 一年第一天是周几var first = new Date(year, 0, 1).getDay()if (first == 1) ...

  2. JS计算字符串在浏览器中显示的宽度

    js计算字符串宽度 大家可能会碰到这样一个需求:一个容器的宽度固定,当内容的宽度超过容器的宽度时鼠标移入显示提示框,不超过时则不显示. 这个时候就需要知道内容到底多宽. 怎么计算宽度 一 .估计法 假 ...

  3. PLSQL计算日期是当月第几周

    网上查询的方法都是这个: SELECT TO_CHAR (p_date, 'W') INTO v_week FROM DUAL; 它实际上是星期N在当月第几次出现. 如本月的第1天是个周四,那么为个月 ...

  4. js计算当前时间的为年的第几周,以及周对应的时间范围

    /*获取当前年的第几周,以及周对应的日期范围(根据当前日期的时间) *@author weiyongfu *@date 2017-11-17 */ function getYearWeekRange( ...

  5. JAVA 计算日期属于当月第几周(日期周计算)

    计算日期属于当月第几周(日期周计算) 本文周计算时间方式为:当月第一个周一为第一周 计算 获取月第一个周一.从当月第一天开始找 第一个周一时间与 sourceTime [传入时间对比],sourceT ...

  6. Oracle常用日期计算(年初、月初、本周第一天、当年第几周、当月第几周)

    为方便计算,文中的日期统一使用number类型,如:20220831 一.计算当年年初日期 create or replace function f_get_nc (v_rq in number -- ...

  7. 【SQL开发实战技巧】系列(十九):数据仓库中时间类型操作(进阶)如何一个SQL打印当月或一年的日历?如何确定某月内第一个和最后—个周内某天的日期?

    系列文章目录 [SQL开发实战技巧]系列(一):关于SQL不得不说的那些事 [SQL开发实战技巧]系列(二):简单单表查询 [SQL开发实战技巧]系列(三):SQL排序的那些事 [SQL开发实战技巧] ...

  8. JS 获取每月有几周(每周五到周四算作一周)

    原文地址:https://caochangkui.github.io/data-week/ 将每周五至周四算作一周,计算每月有几周,并获取到每周的起始时间. 日期格式化 Date.prototype. ...

  9. JS计算两个日期时间差,天 小时 分 秒格式

    JS计算两个日期时间差,天 小时 分 秒格式 function getDateDiff(dateTimeStamp) {var minute = 1000 * 60;var hour = minute ...

最新文章

  1. PHP算法题:如何实现冒泡排序
  2. Swift3.0带来的变化汇总
  3. Python之路----迭代器与生成器
  4. 经典题---数组改“貌”
  5. 最舒适的路线 第六届
  6. monolith_将Java EE Monolith雕刻成微服务
  7. 基于Linux的 Open×××网络之网络架构应用实例
  8. golang游戏服务器框架_Go开源游戏服务器框架——Pitaya
  9. 带存储功能的计算器是什么样的_19年中级会计考生能不能带计算器考试?今天统一回复!...
  10. 新款清新个人自动发卡程序源码
  11. vue项目中如何下载excel表格模板
  12. 实验报告怎么写之书写规范
  13. 卡塞格林光学系统_卡塞格林红外光学系统装调技术研究
  14. 网易2019实习生招聘编程题集合
  15. 深度:年收入超百亿元的恒源祥已成中老年服饰品牌?快速老龄化下中国传统服装品牌的危机与机会
  16. 太阳能热水器工作原理
  17. Linux三大剑客之sed
  18. NSNumber 与 Tagged Pointer
  19. 「儒系」产品经理:管理预期,做好增长的3个核心要素
  20. 西行漫记(17):Holi-Day

热门文章

  1. CAM/TCAM/RAM
  2. 电脑如何拦截弹窗广告
  3. android红外遥控器按键键值,红外遥控实验键值设置
  4. Qt中实现获取中文首字母(GB2312 和 unicode以及调用Unihan实现全汉字拼音转换,支持多音字和生僻字等)和中英文数字排序功能
  5. 2021-2027全球与中国5G物联网市场现状及未来发展趋势
  6. 人类想要拥有金钱、权力、美丽、永生、幸福……但海龟只想做一只海龟
  7. 能源实现物联网云平台方案
  8. 在线24点计算器工具
  9. html 表格 锁定首行,教你实现首行及首列固定 Table
  10. 如何应对大数据分析工程师面试Spark考察,看这一篇就够了