js计算当月有几周并显示对应的日期
需求说明:一个月按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计算当月有几周并显示对应的日期相关推荐
- js计算一年有多少周(星期一为第一天)
function getWeeks(year = 2022) {// 一年第一天是周几var first = new Date(year, 0, 1).getDay()if (first == 1) ...
- JS计算字符串在浏览器中显示的宽度
js计算字符串宽度 大家可能会碰到这样一个需求:一个容器的宽度固定,当内容的宽度超过容器的宽度时鼠标移入显示提示框,不超过时则不显示. 这个时候就需要知道内容到底多宽. 怎么计算宽度 一 .估计法 假 ...
- PLSQL计算日期是当月第几周
网上查询的方法都是这个: SELECT TO_CHAR (p_date, 'W') INTO v_week FROM DUAL; 它实际上是星期N在当月第几次出现. 如本月的第1天是个周四,那么为个月 ...
- js计算当前时间的为年的第几周,以及周对应的时间范围
/*获取当前年的第几周,以及周对应的日期范围(根据当前日期的时间) *@author weiyongfu *@date 2017-11-17 */ function getYearWeekRange( ...
- JAVA 计算日期属于当月第几周(日期周计算)
计算日期属于当月第几周(日期周计算) 本文周计算时间方式为:当月第一个周一为第一周 计算 获取月第一个周一.从当月第一天开始找 第一个周一时间与 sourceTime [传入时间对比],sourceT ...
- Oracle常用日期计算(年初、月初、本周第一天、当年第几周、当月第几周)
为方便计算,文中的日期统一使用number类型,如:20220831 一.计算当年年初日期 create or replace function f_get_nc (v_rq in number -- ...
- 【SQL开发实战技巧】系列(十九):数据仓库中时间类型操作(进阶)如何一个SQL打印当月或一年的日历?如何确定某月内第一个和最后—个周内某天的日期?
系列文章目录 [SQL开发实战技巧]系列(一):关于SQL不得不说的那些事 [SQL开发实战技巧]系列(二):简单单表查询 [SQL开发实战技巧]系列(三):SQL排序的那些事 [SQL开发实战技巧] ...
- JS 获取每月有几周(每周五到周四算作一周)
原文地址:https://caochangkui.github.io/data-week/ 将每周五至周四算作一周,计算每月有几周,并获取到每周的起始时间. 日期格式化 Date.prototype. ...
- JS计算两个日期时间差,天 小时 分 秒格式
JS计算两个日期时间差,天 小时 分 秒格式 function getDateDiff(dateTimeStamp) {var minute = 1000 * 60;var hour = minute ...
最新文章
- PHP算法题:如何实现冒泡排序
- Swift3.0带来的变化汇总
- Python之路----迭代器与生成器
- 经典题---数组改“貌”
- 最舒适的路线 第六届
- monolith_将Java EE Monolith雕刻成微服务
- 基于Linux的 Open×××网络之网络架构应用实例
- golang游戏服务器框架_Go开源游戏服务器框架——Pitaya
- 带存储功能的计算器是什么样的_19年中级会计考生能不能带计算器考试?今天统一回复!...
- 新款清新个人自动发卡程序源码
- vue项目中如何下载excel表格模板
- 实验报告怎么写之书写规范
- 卡塞格林光学系统_卡塞格林红外光学系统装调技术研究
- 网易2019实习生招聘编程题集合
- 深度:年收入超百亿元的恒源祥已成中老年服饰品牌?快速老龄化下中国传统服装品牌的危机与机会
- 太阳能热水器工作原理
- Linux三大剑客之sed
- NSNumber 与 Tagged Pointer
- 「儒系」产品经理:管理预期,做好增长的3个核心要素
- 西行漫记(17):Holi-Day