首页 > 代码库 > 周数的处理

周数的处理

一、时间转周数

这个原理比较简单,找到当前周与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

 

周数的处理