周数的处理

一、时间转周数

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

 

posted @ 2014-09-09 18:30  ccforeverd  阅读(252)  评论(0编辑  收藏  举报