IE9下日期控件周显示出现浮点数。
经排查后发现周数显示为计算得来,源码计算后未经过向上取整。
getWeekNumber = function (date) { var d = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0); var dayWeek = d.getDay(); if(dayWeek == 0){dayWeek = 7;} var firstDay =new Date(date.getFullYear(), 0, 1, 0, 0, 0); firstDay.setMonth(0); firstDay.setDate(1); startWeek = firstDay.getDay();//本年第一天周几 if(startWeek == 0){startWeek = 7;} //console.log(firstDay.toLocaleString()); var weekNum = ((d.getTime()-firstDay.getTime())/(24*60*60*1000)+startWeek-dayWeek)/7 + 1; return weekNum; /* var firstDay = new Date(2011,0,1); d.setDate(d.getDate() - (DoW==0?7:(DoW + 6)) % 7 + 3); console.log(d.toLocaleString()+"*************"+DoW); var ms = d.valueOf(); d.setMonth(0); d.setDate(4); console.log(d.toLocaleString()+"*************"); return Math.round((ms - d.valueOf()) / (7 * 86400000)) + 1; * */ };
return 时增加取整函数解决问题。
Math.round():四舍五入
Math.ceil():向上取整
Math.floor():向下取整
parseInt();直接取整,舍弃小数点