Javascript对日期的操作

javascript对日期处理的常用方法类

 

< script language = " JavaScript " >
<!--
// 程序:常用公历日期处理程序
  /**//* 用相对不规则的字符串来创建日期对象,不规则的含义为:顺序包含年月日三个数值串,有间隔 */
String.prototype.parseDate 
=   function (){
    
var  ar  =  ( this   +   " ,0,0,0 " ).match( / \d+ / g);
    
return  ar[ 5 ] ? ( new  Date(ar[ 0 ],ar[ 1 ] - 1 ,ar[ 2 ],ar[ 3 ],ar[ 4 ],ar[ 5 ])):( new  Date());
}

/**//*
 * 功能:根据输入表达式返回日期字符串
 * 参数:dateFmt:字符串,由以下结构组成    
 *      yy:长写年,YY:短写年mm:数字月,MM:英文月,dd:日,hh:时,
 *      mi:分,ss秒,ms:毫秒,we:汉字星期,WE:英文星期.
 *      isFmtWithZero : 是否用0进行格式化,true or false
 * 返回:对应日期的中文字符串
*/
Date.prototype.toString 
=   function (dateFmt,isFmtWithZero){
    dateFmt 
=  (dateFmt  ==   null   ?   " yy-mm-dd hh:mi:ss "  : dateFmt);
    
if ( typeof (dateFmt)  !=   " string "  )
        
throw  ( new  Error( - 1 ' toString()方法的第一个参数为字符串类型! ' ));
    isFmtWithZero 
=   !! isFmtWithZero;
    
var  weekArr = [[ " " , " " , " " , " " , " " , " " , " " ],[ " SUN " , " MON " , " TUR " , " WED " , " THU " , " FRI " , " SAT " ]];
    
var  monthArr = [ " JAN " , " FEB " , " MAR " , " APR " , " MAY " , " JUN " , " JUL " , " AUG " , " SEP " , " OCT " , " NOV " , " DEC " ];
    
var  str = dateFmt;
    
var  o  =  {
        
" yy "  :  this .getFullYear(),
        
" YY "  :  this .getYear(),
        
" mm "  :  this .getMonth() + 1 ,
        
" MM "  : monthArr[ this .getMonth()],
        
" dd "  :  this .getDate(),
        
" hh "  :  this .getHours(),
        
" mi "  :  this .getMinutes(),
        
" ss "  :  this .getSeconds(),
        
" we "  :  " 星期 "   +  weekArr[ 0 ][ this .getDay()],
        
" WE "  : weekArr[ 1 ][ this .getDay()]
    }
    
for ( var  i  in  o){
        str 
=  str.replace( new  RegExp(i, " g " ),o[i].toString().fmtWithZero(isFmtWithZero));
    }
    str 
=  str.replace( / ms / g, this .getMilliseconds().toString().fmtWithZeroD(isFmtWithZero));
    
return  str;
}
/**//* 将一位数字格式化成两位,如: 9 to 09 */
String.prototype.fmtWithZero 
=   function (isFmtWithZero){    
    
return  (isFmtWithZero  &&   / ^\d$ / .test( this )) ? " 0 " + this : this ;
}
String.prototype.fmtWithZeroD 
=   function (isFmtWithZero){    
    
return  (isFmtWithZero  &&   / ^\d{2}$ / .test( this )) ? " 00 " + this :((isFmtWithZero  &&   / ^\d$ / .test( this )) ? " 0 " + this : this );
}

/**//*  功能 : 返回与某日期相距N天(N个24小时)的日期
 * 参数 : num number类型 可以为正负整数或者浮点数,默认为1;
 *        type 0(秒) or 1(天),默认为天
 * 返回 : 新的Date对象
 
*/
Date.prototype.dateAfter
= function (num,type){
    num 
=  (num  ==   null ? 1 :num);
    
if ( typeof (num) != " number " throw   new  Error( - 1 , " dateAfterDays(num,type)的num参数为数值类型. " );
    type 
=  (type == null ? 1 :type);
    
var  arr  =  [ 1000 , 86400000 ];
    
return   new  Date( this .valueOf()  +  num * arr[type]);
}

// 判断是否是闰年,返回true 或者 false
Date.prototype.isLeapYear  =   function  (){
    
var  year  =   this .getFullYear();
    
return  ( 0 == year % 4   &&  ((year  %   100   !=   0 ) || (year  %   400   ==   0 )));
}

// 返回该月天数
Date.prototype.getDaysOfMonth  =   function  (){
    
return  ( new  Date( this .getFullYear(), this .getMonth() + 1 , 0 )).getDate();
}

// 日期比较函数,参数date:为Date类型,如this日期晚于参数:1,相等:0 早于: -1
Date.prototype.dateCompare  =   function (date){
    
if ( typeof (date)  !=   " object "   ||   ! ( / Date / .test(date.constructor)))
         
throw   new  Error( - 1 , " dateCompare(date)的date参数为Date类型. " );
    
var  d  =   this .getTime()  -  date.getTime();
    
return  d > 0 ? 1 :(d == 0 ? 0 : - 1 );
}

/**//* 功能:返回两日期之差
 *参数: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  num = 0 ;
    
var  o  =  {
        
" ww "  :  7 * 86400000 ,
        
" dd "  :  86400000 ,
        
" hh "  :  3600000 ,
        
" mi "  :  60000 ,
        
" ss "  :  1000 ,
        
" ms "  :  1
    }
    
switch (type){
        
case   " yy " : num  =   this .getFullYear()  -  date.getFullYear();  break ;
        
case   " mm " : num  =  ( this .getFullYear()  -  date.getFullYear()) * 12 + this .getMonth() - date.getMonth();  break ;
        
default
            
var  sub  =   this .valueOf()  -  date.valueOf();
            
if  (o[type])
                num 
=  (sub / o[type]).fmtRtnVal(iof);
             break ;
    }
    
return  (output  ?  output.replace( / # / g, "   " + num + "   " ) : num);
}
// 返回整数或者两位小数的浮点数
Number.prototype.fmtRtnVal  =   function  (intOrFloat){
    
return  (intOrFloat  ==   0   ?  Math.floor( this ) : parseInt( this * 100 ) / 100);
}
// 根据当前日期所在年和周数返回周日的日期
Date.prototype.RtnByWeekNum  =   function  (weekNum){
    
if ( typeof (weekNum)  !=   " number " )
        
throw   new  Error( - 1 , " RtnByWeekNum(weekNum)的参数是数字类型. " );
    
var  date  =   new  Date( this .getFullYear(), 0 , 1 );
    
var  week  =  date.getDay();
    week 
=  (week == 0 ? 7 :week);
    
return  date.dateAfter(weekNum * 7 - week, 1 );
}
// 根据日期返回该日期所在年的周数
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);
}

// -->
< / script>

< script language = " JavaScript " >
<!--
var  dw  =  document.write;
var  date2  =   " 2005-12-30 " .parseDate();
dw(date2,
" <br> " );
var  date3  =   " 2006-1-10 11 11 11 " .parseDate();
dw(date2.calDateDistance(date3,
null , null , " 时间差为#天! " ));
// alert(new Date(2000,2,-29));
//
-->
< / script>

你可能感兴趣的:(JavaScript)