JS获取日期周数(含年份)
JS获取日期周数(含年份)
- 算法符合ISO8601标准(规定第一个星期四为第一周)
- ISO8601标准http://baike.baidu.com/view/931641.htm
1 function getYearWeek(dateString){ 2 var da =dateString;//日期格式2015-12-30 3 //当前日期 4 var date1 = new Date(da.substring(0,4), parseInt(da.substring(5,7)) - 1, da.substring(8,10)); 5 //1月1号 6 var date2 = new Date(da.substring(0,4), 0, 1); 7 //获取1月1号星期(以周一为第一天,0周一~6周日) 8 var dateWeekNum=date2.getDay()-1; 9 if(dateWeekNum<0){dateWeekNum=6;} 10 if(dateWeekNum<4){ 11 //前移日期 12 date2.setDate(date2.getDate()-dateWeekNum); 13 }else{ 14 //后移日期 15 date2.setDate(date2.getDate()+7-dateWeekNum); 16 } 17 var d = Math.round((date1.valueOf() - date2.valueOf()) / 86400000); 18 if(d<0){ 19 var date3 = (date1.getFullYear()-1)+"-12-31"; 20 return getYearWeek(date3); 21 }else{ 22 //得到年数周数 23 var year=date1.getFullYear(); 24 var week=Math.ceil((d+1 )/ 7); 25 return year+"年第"+week+"周"; 26 } 27 }