/*功能:返回两日期之差
 *参数:pd   PowerDate对象
 *    type: 返回类别标识.yy:年,mm:月,ww:周,dd:日,hh:小时,mi:分,ss:秒,ms:毫秒
 *    intOrFloat :返回整型还是浮点型值 0:整型,不等于0:浮点型
 *    output : 输出提示,如:时间差为#周!
 */
Date.prototype.calDateDistance = function (date,type,intOrFloat,output){
if(typeof(date) != "object" || !(/Date/.test(date.constructor)))
 throw new Error(-1,"calDateDistance(date,type,intOrFloat)的date参数为Date类型.");
type = (type==null?'dd':type);
if(!((new RegExp(type+",","g")).test("yy,mm,ww,dd,hh,mi,ss,ms,")))
 throw new Error(-1,"calDateDistance(pd,type,intOrFloat,output)的type参数为非法.");
var iof = (intOrFloat==null?0:intOrFloat);
var miSecMain = this.valueOf();
var miSecSub  = date.valueOf();
var num=0;
switch(type){
case "yy": num = this.getFullYear() - date.getFullYear(); break;
case "mm": num = (this.getFullYear() - date.getFullYear())*12+this.getMonth()-date.getMonth(); break;
case "ww": num = ((miSecMain-miSecSub)/7/86400000).fmtRtnVal(iof); break;
case "dd": num = ((miSecMain-miSecSub)/86400000).fmtRtnVal(iof); break;
case "hh": num = ((miSecMain-miSecSub)/3600000).fmtRtnVal(iof); break;
case "mi": num = ((miSecMain-miSecSub)/60000).fmtRtnVal(iof); break;
case "ss": num = ((miSecMain-miSecSub)/1000).fmtRtnVal(iof); break;
case "ms": num = (miSecMain-miSecSub);break;
default:  break;
}
if(output)
return output.replace(/#/g," "+num+" ");
else return num;
}//根据日期返回该日期所在年的周数
Date.prototype.getWeekNum = function (){
var dat = new Date(this.getFullYear(),0,1);
var week = dat.getDay();
week = (week==0?7:week);
var days = this.calDateDistance(dat,"dd")+1;
return ((days + 6 - this.getDay() - 7 + week)/7);
}

解决方案 »

  1.   

    var date = new Date();
    alert(date.getWeekNum());
      

  2.   

    <html>
    <head>
    <title>根据日期返回该日期所在年的周数</title>
    </head>
    <body>
    <SCRIPT LANGUAGE="JavaScript">
    /*功能:返回两日期之差
     *参数:pd   PowerDate对象
     *    type: 返回类别标识.yy:年,mm:月,ww:周,dd:日,hh:小时,mi:分,ss:秒,ms:毫秒
     *    intOrFloat :返回整型还是浮点型值 0:整型,不等于0:浮点型
     *    output : 输出提示,如:时间差为#周!
     */
    Date.prototype.calDateDistance = function (date,type,intOrFloat,output){
    if(typeof(date) != "object" || !(/Date/.test(date.constructor)))
     throw new Error(-1,"calDateDistance(date,type,intOrFloat)的date参数为Date类型.");
    type = (type==null?'dd':type);
    if(!((new RegExp(type+",","g")).test("yy,mm,ww,dd,hh,mi,ss,ms,")))
     throw new Error(-1,"calDateDistance(pd,type,intOrFloat,output)的type参数为非法.");
    var iof = (intOrFloat==null?0:intOrFloat);
    var miSecMain = this.valueOf();
    var miSecSub  = date.valueOf();
    var num=0;
    switch(type){
    case "yy": num = this.getFullYear() - date.getFullYear(); break;
    case "mm": num = (this.getFullYear() - date.getFullYear())*12+this.getMonth()-date.getMonth(); break;
    case "ww": num = ((miSecMain-miSecSub)/7/86400000).fmtRtnVal(iof); break;
    case "dd": num = ((miSecMain-miSecSub)/86400000).fmtRtnVal(iof); break;
    case "hh": num = ((miSecMain-miSecSub)/3600000).fmtRtnVal(iof); break;
    case "mi": num = ((miSecMain-miSecSub)/60000).fmtRtnVal(iof); break;
    case "ss": num = ((miSecMain-miSecSub)/1000).fmtRtnVal(iof); break;
    case "ms": num = (miSecMain-miSecSub);break;
    default:  break;
    }
    if(output)
    return output.replace(/#/g," "+num+" ");
    else return num;
    }//根据日期返回该日期所在年的周数
    Date.prototype.getWeekNum = function (){
    var dat = new Date(this.getFullYear(),0,1);
    var week = dat.getDay();
    week = (week==0?7:week);
    var days = this.calDateDistance(dat,"dd")+1;
    return((days + 6 - this.getDay() - 7 + week)/7);
    }
    var date = new Date();
    alert(date.getWeekNum());</SCRIPT>
    </body>
    </html>
      

  3.   

    //返回整数或者两位小数的浮点数
    Number.prototype.fmtRtnVal = function (intOrFloat){
    return (intOrFloat == 0 ? Math.floor(this) : parseInt(this*100)/100);
    }
      

  4.   

    非常感谢zhaoxiaoyang(梅雪香@深圳),
    阁下不但是个高人,而且是个好人,很好,揭贴。