解决方法
这是一个不依赖于库的答案.它使用一个函数来计算12月31日所需年份的一周中的一周.如果周是1(即12月31日是下一年的第一周),它会将日数降低,直到获得不同的值,这将是所需年份的最后一周.
另一种方法是检查返回的年份是否相同并减少日期数量,直到它为止.
function getWeekNumber(d) { // copy date so don't modify original d = new Date(+d); d.setHours(0,0); // Set to nearest Thursday: current date + 4 - current day number // Make Sunday's day number 7 d.setDate(d.getDate() + 4 - (d.getDay()||7)); // Get first day of year var yearStart = new Date(d.getFullYear(),1); // Calculate full weeks to nearest Thursday var weekNo = Math.ceil(( ( (d - yearStart) / 86400000) + 1)/7) // Return array of year and week number return [d.getFullYear(),weekNo]; } function weeksInYear(year) { var month = 11,day = 31,week; // Find week that 31 Dec is in. If is first week,reduce date until // get prevIoUs week. do { d = new Date(year,month,day--); week = getWeekNumber(d)[1]; } while (week == 1); return week; } alert(weeksInYear(2015)); // 53
getWeekNumber代码来自:Get week of year in JavaScript like in PHP.
编辑
根据Scott的建议,这里有一个没有do循环的东西,所以如果12月31日是在第二年它将获得12月24日的一周.
function weeksInYear(year) { var d = new Date(year,11,31); var week = getWeekNumber(d)[1]; return week == 1? getWeekNumber(d.setDate(24))[1] : week; }
作为测试,2013-12-31在2014年第1周,而且WeekInYear(2013)返回52.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。