Это
function week(date) {
var firstSat = new Date(date.getFullYear(), 0, 1);
firstSat.setDate(firstSat.getDate() + (6 - firstSat.getDay()));
var delta = Math.floor((date - firstSat) / (7*24*60*60*1000));
return delta < 0 ?
delta + 52 : // first few days before 1st Sat
delta
}
week(new Date(2009,0,1)); // Jan 1, 2009 => 51 => "1 week into last year"
week(new Date(2009,0,2)); // 51
week(new Date(2009,0,3)); // 0 => "[beginning of] week 1"
week(new Date(2009,0,10)); // 1 => "[beginning of] week 2"
week(new Date(2009,0,11)); // 1 => "still week 2"
week(new Date(2009, 9, 30)); // Fri Oct 30, 2009 => 42