js计算当前时间的为年的第几周,以及周对应的时间范围
/*获取当前年的第几周,以及周对应的日期范围(根据当前日期的时间) *@author weiyongfu *@date 2017-11-17 */ function getYearWeekRange(year,weekNum){var date=null;var year=year;var month=null;var day=null;var d=null;if(weekNum==null||weekNum==""){//如果为空,默认加载当前日期,否则加载选择的周数 date=new Date();//获取系统时间 year=date.getFullYear();//年 month=date.getMonth()+1;//月 day=date.getDate();// var d=year+"-"+month+"-"+day;}else{if(weekNum.length==3){weekNum=weekNum.substring(1,2);}else if(weekNum.length==4){weekNum=weekNum.substring(1,3);}var weekDay=getDayEveryDay(year,weekNum);d=weekDay[0];//获取对应周数的第一天 }//获取当前日期的为今年的第几周的周数,常规的获取直接调用getWeekNumber(year, month, day); /*由于项目需要,我这儿的周定义为周五到下周四为一周,所以我传入的日期参数得往前推4天, *然后在调用常规的计算周数的方法 */ var beforeFourDay=GetDateStr(-4,d);//当前日期前推4天的日期,返回值格式为2017-01-01 var yearMonthDay=beforeFourDay.split("-");if(weekNum==null||weekNum==""){//如果为空,默认加载当前日期的周数以及对应范围,否未为选择的周数 weekNum=getWeekNumber(yearMonthDay[0], yearMonthDay[1], yearMonthDay[2]);//按照周五到下周四为一周,计算当前日期为今年的第几周 }else{weekNum=weekNum;}//获取当前日期的为今年的第几周的周数日期范围,getDateRange("2017-01-01"),在调用常规的计算周数日期的方法返回值为["2016-12-26","2017-1-1"]; /*由于项目需要,我这儿的周定义为周五到下周四为一周, *在调用常规的计算周数日期的方法返回值时得相应做出调整getDateRange("2017-01-01");return ["2016-12-26","2017-1-1"]; * arr[0]前推3天,arr[1]后推5天,["2016-12-30","2017-1-5"],得出2017年的1月1馹,(按照周五到下周四算一周为一周的日期范围为["2016-12-30","2017-1-5"]) */ var weekRange=getDateRange(beforeFourDay);//常规的传入时间返回周的范围(周一到周天) return 格式["2016-12-26","2017-1-1"] weekRange[0]=GetDateStr(4, weekRange[0]);//后推4天 weekRange[1]=GetDateStr(4, weekRange[1]);//后推4天 //返回当前日期为[年,周数,周的范围start,周的范围end],按照周五到下周四为一周 return [year,weekNum,weekRange[0],weekRange[1]]; }/* *这个方法是获取周对应的日期范围(常规的一周为周一到周天为一周 * 参数datevalue如:2017-01-01) */ function getDateRange(datevalue){var dateValue = datevalue;var arr = dateValue.split("-")//月份-1 因为月份从0开始 构造一个Date对象 var date = new Date(arr[0],arr[1]-1,arr[2]);var dateOfWeek = date.getDay();//返回当前日期的在当前周的某一天(0~6--周日到周一) var dateOfWeekInt = parseInt(dateOfWeek,10);//转换为整型 if(dateOfWeekInt==0){//如果是周日 dateOfWeekInt=7;}var aa = 7-dateOfWeekInt;//当前于周末相差的天数 var temp2 = parseInt(arr[2],10);//按10进制转换,以免遇到08和09的时候转换成0 var sunDay = temp2+aa;//当前日期的周日的日期 var monDay = sunDay-6//当前日期的周一的日期 var startDate = new Date(arr[0],arr[1]-1,monDay);var endDate = new Date(arr[0],arr[1]-1,sunDay);var sm = parseInt(startDate.getMonth())+1;//月份+1 因为月份从0开始 var em = parseInt(endDate.getMonth())+1;// alert("星期一的日期:"+startDate.getFullYear()+"-"+sm+"-"+startDate.getDate()); // alert("星期日的日期:"+endDate.getFullYear()+"-"+em+"-"+endDate.getDate()); var start = startDate.getFullYear()+"-"+sm+"-"+startDate.getDate();var end = endDate.getFullYear()+"-"+em+"-"+endDate.getDate();var result = new Array();result.push(start);result.push(end);return result; }//以下几个函数是判断当前日期所对应的周数,如2017-1-1,为2017年第一周,return 1 /** 2 * 判断年份是否为润年 3 * 4 * @param {Number} year 5 */ function isLeapYear(year) {return (year % 400 == 0) || (year % 4 == 0 && year % 100 != 0); } /** 10 * 获取某一年份的某一月份的天数 11 * 12 * @param {Number} year 13 * @param {Number} month 14 */ function getMonthDays(year, month) {return [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month] || (isLeapYear(year) ? 29 : 28); } /** 27 * 获取某年的某天是第几周 28 * @param {Number} y 29 * @param {Number} m 30 * @param {Number} d 31 * @returns {Number} 32 */ function getWeekNumber(y, m, d) {var now = new Date(y, m - 1, d),year = now.getFullYear(),month = now.getMonth(),days = now.getDate();//那一天是那一年中的第多少天 for (var i = 0; i < month; i++) {days += getMonthDays(year, i);}//那一年第一天是星期几 var yearFirstDay = new Date(year, 0, 1).getDay() || 7;var week = null;if (yearFirstDay == 1) {week = Math.ceil(days / yearFirstDay);} else {days -= (7 - yearFirstDay + 1);week = Math.ceil(days / 7) + 1;}return week; }//计算周的范围结束 /* *js获取当前指定的前几天的日期,往前推4天,GetDateStr(4),后推4天GetDateStr(-4) */ function GetDateStr(AddDayCount,date) {var dd = new Date(date);dd.setDate(dd.getDate()+AddDayCount);//获取AddDayCount天后的日期 var y = dd.getFullYear();var m = (dd.getMonth()+1)<10?"0"+(dd.getMonth()+1):(dd.getMonth()+1);//获取当前月份的日期,不足10补0 var d = dd.getDate()<10?"0"+dd.getDate():dd.getDate();//获取当前几号,不足10补0 return y+"-"+m+"-"+d; }/* *传入年,周数,获取周数对应的所有日期 */ var getDayEveryDay = function(year, index) {var d = new Date(year, 0, 1);while (d.getDay() != 1) {d.setDate(d.getDate() + 1);}var to = new Date(year + 1, 0, 1);var i = 1;var arr = [];for (var from = d; from < to;) {if (i == index) {arr.push(from.getFullYear() + "-" + (from.getMonth() + 1) + "-" + from.getDate());}var j = 6;while (j > 0) {from.setDate(from.getDate() + 1);if (i == index) {arr.push(from.getFullYear() + "-" + (from.getMonth() + 1) + "-" + from.getDate());}j--;}if (i == index) {return arr;}from.setDate(from.getDate() + 1);i++;} }
js计算当前时间的为年的第几周,以及周对应的时间范围相关推荐
- js 获取某个时间的一天前 几天前 一周前 几周前 一个月前 一年前的时间
js 获取某个时间的一天前 几天前 一周前 几周前 一个月前 一年前的时间 1.一天前 var dateStr = new Date(); dateStr.setDate(dateStr.getDat ...
- js 计算当前时间和和一段时候后的工作日天数,排除周末和法定假日
例:计算当前时间 过5个(设为N个工作日)工作日后的的日期. 思路: 获取当前系统时间 +n(n个工作日后) + 之间的周末和法定假日天数 因为法定假日是不变的 ,所以 首先我们将法定假日设定为一个数 ...
- JS计算请假时间(起始时间与终止时间)
正常上班时间为周一至周五 9:00 -12:00,13:00-18:00,实现了选择了请假起始时间与终止时间后,算出请假的总小时数,此总小时数扣除了非上班时间(周末,还有一天中的非上班时间:如午休的那 ...
- JS计算请假时间(起始时间与终止时间可跨月)
正常上班时间为周一至周五 8:30 -12:00,13:30-18:00,实现了选择了请假起始时间与终止时间后,算出请假的总小时数,此总小时数扣除了非上班时间(周末,还有一天中的非上班时间:如午休的那 ...
- 【工作日推算】JS计算当前时间前N个工作日(去除周末及节假日,文尾附源码下载)
[写在前面]前些日子忙了几天有关指标对比分析的功能,因为系统是对接券商类的业务,所以他们比较关注的是工作日的数据波动,因此前端指标对比数据需要拿工作日的,不然他们停市的数据比较也没用,故而今天针对之前 ...
- js 计算当前时间的前n分钟或后n分钟的时间
2019独角兽企业重金招聘Python工程师标准>>> .... 转载于:https://my.oschina.net/qimhkaiyuan/blog/1554336
- JS 计算外出办事时间(按照一天工作八小时制)
下午写了一小段JS代码,来计算公司人员外出办事时间. 已知条件:外出一天按照八小时工作制来计算. 当天返回公司直接计算外出时间. 外出时间不满一小时按照一小时计算. 如果是非工作日不做计算,在这里没写 ...
- JS 计算两个时间的间隔
js 计算两个时间之间间隔的天数 var start = new Date('2019-12-10'); //开始的时间 var end = new Date('2020-01-09'); //结束的 ...
- js中计算一个时间点加上一个时间段后的时间
在实际的项目中,我们常常有这样的需求,计算某个时间点加上某个时间段后(几天几小时几分钟)的时间.如: 2016-04-05 09:29:15 要加上2天4小时5分钟后的时间: 即:2016-04-07 ...
最新文章
- Java 8新特性——default方法(defenece方法)介绍
- 首次揭秘:腾讯TDSQL分布式多级一致性数据库系统技术
- kernel和filter这两个概念在CNN中的区别以及卷积核与卷积层的关系
- php ci session获取值,CI3.1 Session类取不到值的问题
- Maple: 多项式相乘
- 柱形图无数据可选中_Excel---多层柱形图来了!让领导看呆
- 智慧数字门店管理系统、PAD、门店系统、收银开单、预约服务、会员管理、账单管理、数据统计、商品、库存、美容美体、美甲美睫、医疗美容、美发造型、医疗诊所、中医理疗、宠物服务、美业、经营业务、售卡、交班
- CMD attrib命令详解
- shell脚本循环执行一个linux命令,Linux中循环执行shell命令的方法
- ASP.NET的安全性
- 【秒懂音视频开发】16_AAC解码实战
- i8一点通无盘解决方案
- Discuz!如何实现为版块设定自定义logo,实现不同的版块不同的logo!
- 2018java面试(1)- 自我介绍和项目介绍
- ABAP问题记录--->物料编码和序列号的相爱相杀
- ios 裁剪框大小_ios – 如何将视频裁剪为特定大小?
- Android studio 运行警告 We recommend using a newer Android Gradle plugin to use compileSdk = 33
- 【Android折叠屏适配】基于AutoSize框架适配折叠屏并兼容多窗口模式
- centos 安装yapi 详细教程
- 是非人生 — 一个菜鸟程序员的5年职场路 第14节