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();直接取整,舍弃小数点
posted @ 2019-01-15 15:53  水木丶良  阅读(179)  评论(0编辑  收藏  举报