周数的处理
一、时间转周数
这个原理比较简单,找到当前周与1月1号相同星期数的一天,然后相减,除以一周的毫秒数,再加1就得到了,代码如下:
// 时间转周数:参数(时间戳) function time2week(time){ var current=new Date(time); var current_year=current.getFullYear(); var current_month=current.getMonth(); var current_date=current.getDate(); var current_week=current.getDay(); var thisYear=new Date(current_year,0,1); // 这一年第一天 var thisYear_week=thisYear.getDay(); var thisWeek=new Date(current_year,current_month,thisYear_week - current_week + current_date); // 与这一年第一天同样的星期几 var cut=thisWeek - thisYear; var week=cut / (1000 * 60 * 60 * 24 * 7) + 1; return week; } var timeline=1410249135; alert(time2week(timeline * 1000)); // 37
二、周数转时间
这个比上面的稍微复杂点,先求这一年第一天是周几,然后确定这一年的第二周的周一是哪一天(因为第一周的周一可能在上一年),再根据周数判断这周的周一和周末是哪一天,代码如下:
// 周数转时间:参数(哪年哪周,如201437) function week2date(str){ str=str.toString(); var res={}; var year=str.substring(0,4); var week=str.substring(4); var thisYear=new Date(year,0,1); var thisYear_week=thisYear.getDay(); // 获得第week周的周一 thisYear.setDate(parseInt("2876543".charAt(thisYear_week))+(week-2)*7); res.start={ year: thisYear.getFullYear(), month: thisYear.getMonth() + 1, data: thisYear.getDate() }; // 获得第week周的周日 thisYear.setDate(thisYear.getDate()+6); res.end={ year: thisYear.getFullYear(), month: thisYear.getMonth() + 1, data: thisYear.getDate() }; return res; } console.log(week2date(201437)); // Object {start: Object, end: Object} // start: Object // data: 8 // month: 9 // year: 2014 // end: Object // data: 14 // month: 9 // year: 2014