js 日期常用操作

http://www.cnblogs.com/nianshi/archive/2009/07/22/1528448.html

 

代码
日期时间脚本库方法列表

Date.prototype.isLeapYear 判断闰年
Date.prototype.Format 日期格式化
Date.prototype.DateAdd 日期计算
Date.prototype.DateDiff 比较日期差
Date.prototype.toString 日期转字符串
Date.prototype.toArray 日期分割为数组
Date.prototype.DatePart 取日期的部分信息
Date.prototype.MaxDayOfDate 取日期所在月的最大天数
Date.prototype.WeekNumOfYear 判断日期所在年的第几周
StringToDate 字符串转日期型
IsValidDate 验证日期有效性
CheckDateTime 完整日期时间检查
daysBetween 日期天数差
//  判断闰年   
Date.prototype.isLeapYear  =   function ()    
{    
    
return  ( 0 == this .getYear() % 4 && (( this .getYear() % 100 != 0 ) || ( this .getYear() % 400 == 0 )));    
}    
//  日期格式化   
//
 格式 YYYY/yyyy/YY/yy 表示年份   
//
 MM/M 月份   
//
 W/w 星期   
//
 dd/DD/d/D 日期   
//
 hh/HH/h/H 时间   
//
 mm/m 分钟   
//
 ss/SS/s/S 秒     
Date.prototype.Format  =   function (formatStr)    
{    
    
var  str  =  formatStr;    
    
var  Week  =  [ ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' ];   
   
      str
= str.replace( / yyyy|YYYY / , this .getFullYear());    
      str
= str.replace( / yy|YY / ,( this .getYear()  %   100 ) > 9 ? ( this .getYear()  %   100 ).toString(): ' 0 '   +  ( this .getYear()  %   100 ));    
   
      str
= str.replace( / MM / , this .getMonth() > 9 ? this .getMonth().toString(): ' 0 '   +   this .getMonth());    
      str
= str.replace( / M / g, this .getMonth());    
   
      str
= str.replace( / w|W / g,Week[ this .getDay()]);    
   
      str
= str.replace( / dd|DD / , this .getDate() > 9 ? this .getDate().toString(): ' 0 '   +   this .getDate());    
      str
= str.replace( / d|D / g, this .getDate());    
   
      str
= str.replace( / hh|HH / , this .getHours() > 9 ? this .getHours().toString(): ' 0 '   +   this .getHours());    
      str
= str.replace( / h|H / g, this .getHours());    
      str
= str.replace( / mm / , this .getMinutes() > 9 ? this .getMinutes().toString(): ' 0 '   +   this .getMinutes());    
      str
= str.replace( / m / g, this .getMinutes());    
   
      str
= str.replace( / ss|SS / , this .getSeconds() > 9 ? this .getSeconds().toString(): ' 0 '   +   this .getSeconds());    
      str
= str.replace( / s|S / g, this .getSeconds());    
   
    
return  str;    
}    
   
// +---------------------------------------------------   
//
| 求两个时间的天数差 日期格式为 YYYY-MM-dd    
//
+---------------------------------------------------   
function  daysBetween(DateOne,DateTwo)   
{    
    
var  OneMonth  =  DateOne.substring( 5 ,DateOne.lastIndexOf ( ' - ' ));   
    
var  OneDay  =  DateOne.substring(DateOne.length,DateOne.lastIndexOf ( ' - ' ) + 1 );   
    
var  OneYear  =  DateOne.substring( 0 ,DateOne.indexOf ( ' - ' ));   
   
    
var  TwoMonth  =  DateTwo.substring( 5 ,DateTwo.lastIndexOf ( ' - ' ));   
    
var  TwoDay  =  DateTwo.substring(DateTwo.length,DateTwo.lastIndexOf ( ' - ' ) + 1 );   
    
var  TwoYear  =  DateTwo.substring( 0 ,DateTwo.indexOf ( ' - ' ));      
    
var  cha = ((Date.parse(OneMonth + ' / ' + OneDay + ' / ' + OneYear) -  Date.parse(TwoMonth + ' / ' + TwoDay + ' / ' + TwoYear)) / 86400000);    
     return  Math.abs(cha);   
}   
// | 日期计算      
Date.prototype.DateAdd  =   function (strInterval, Number) {    
    
var  dtTmp  =   this ;   
    
switch  (strInterval) {    
        
case   ' s '  : return   new  Date(Date.parse(dtTmp)  +  ( 1000   *  Number));   
        
case   ' n '  : return   new  Date(Date.parse(dtTmp)  +  ( 60000   *  Number));   
        
case   ' h '  : return   new  Date(Date.parse(dtTmp)  +  ( 3600000   *  Number));   
        
case   ' d '  : return   new  Date(Date.parse(dtTmp)  +  ( 86400000   *  Number));   
        
case   ' w '  : return   new  Date(Date.parse(dtTmp)  +  (( 86400000   *   7 *  Number));   
        
case   ' q '  : return   new  Date(dtTmp.getFullYear(), (dtTmp.getMonth())  +  Number * 3 , dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());   
        
case   ' m '  : return   new  Date(dtTmp.getFullYear(), (dtTmp.getMonth())  +  Number, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());   
        
case   ' y '  : return   new  Date((dtTmp.getFullYear()  +  Number), dtTmp.getMonth(), dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());   
      }   
}   
       年加一
         
< script language = " javascript " >
            today       
=         new        Date(); 
            alert(today.getYear()
+ 1 );
          
< / script>

// | 比较日期差 dtEnd 格式为日期型或者 有效日期格式字符串   
Date.prototype.DateDiff  =   function (strInterval, dtEnd) {    
    
var  dtStart  =   this ;   
    
if  ( typeof  dtEnd  ==   ' string '  ) // 如果是字符串转换为日期型   
      {    
          dtEnd 
=  StringToDate(dtEnd);   
      }   
    
switch  (strInterval) {    
        
case   ' s '  : return  parseInt((dtEnd  -  dtStart)  /   1000 );   
        
case   ' n '  : return  parseInt((dtEnd  -  dtStart)  /   60000 );   
        
case   ' h '  : return  parseInt((dtEnd  -  dtStart)  /   3600000 );   
        
case   ' d '  : return  parseInt((dtEnd  -  dtStart)  /   86400000 );   
        
case   ' w '  : return  parseInt((dtEnd  -  dtStart)  /  ( 86400000   *   7 ));   
        
case   ' m '  : return  (dtEnd.getMonth() + 1 ) + ((dtEnd.getFullYear() - dtStart.getFullYear()) * 12 -  (dtStart.getMonth() + 1 );   
        
case   ' y '  : return  dtEnd.getFullYear()  -  dtStart.getFullYear();   
      }   
}      
// | 日期输出字符串,重载了系统的toString方法   
Date.prototype.toString  =   function (showWeek)   
{    
    
var  myDate =   this ;   
    
var  str  =  myDate.toLocaleDateString();   
    
if  (showWeek)   
      {    
        
var  Week  =  [ ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' ];   
          str 
+=   '  星期 '   +  Week[myDate.getDay()];   
      }   
    
return  str;   
}   
      
// | 日期合法性验证   
//
| 格式为:YYYY-MM-DD或YYYY/MM/DD      
function  IsValidDate(DateStr)    
{    
    
var  sDate = DateStr.replace( / (^\s+|\s+$) / g, '' );  // 去两边空格;    
     if (sDate == '' return   true ;    
    
// 如果格式满足YYYY-(/)MM-(/)DD或YYYY-(/)M-(/)DD或YYYY-(/)M-(/)D或YYYY-(/)MM-(/)D就替换为''    
     // 数据库中,合法日期可以是:YYYY-MM/DD(2003-3/21),数据库会自动转换为YYYY-MM-DD格式    
     var  s  =  sDate.replace( / [\d]{ 4,4 }[\- / ]{  1  }[\d]{  1 , 2  }[\ - / ]{ 1 }[\d]{ 1,2 } / g, '' );    
    
if  (s == '' // 说明格式满足YYYY-MM-DD或YYYY-M-DD或YYYY-M-D或YYYY-MM-D    
      {    
        
var  t = new  Date(sDate.replace( / \- / g, ' / ' ));    
        
var  ar  =  sDate.split( / [- / :] / );    
         if (ar[ 0 !=  t.getYear()  ||  ar[ 1 !=  t.getMonth() + 1   ||  ar[ 2 !=  t.getDate())    
          {    
            
// alert('错误的日期格式!格式为:YYYY-MM-DD或YYYY/MM/DD。注意闰年。');    
             return   false ;    
          }    
      }    
    
else     
      {    
        
// alert('错误的日期格式!格式为:YYYY-MM-DD或YYYY/MM/DD。注意闰年。');    
         return   false ;    
      }    
    
return   true ;    
}    
// | 日期时间检查   
//
| 格式为:YYYY-MM-DD HH:MM:SS      
function  CheckDateTime(str)   
{    
    
var  reg  =   / ^(\d+)-(\d{ 1,2 })-(\d{ 1,2 }) (\d{ 1,2 }):(\d{ 1,2 }):(\d{ 1,2 })$ / ;    
    
var  r  =  str.match(reg);    
    
if (r == null ) return   false ;    
      r[
2 ] = r[ 2 ] - 1 ;    
    
var  d =   new  Date(r[ 1 ],r[ 2 ],r[ 3 ],r[ 4 ],r[ 5 ],r[ 6 ]);    
    
if (d.getFullYear() != r[ 1 ]) return   false ;    
    
if (d.getMonth() != r[ 2 ]) return   false ;    
    
if (d.getDate() != r[ 3 ]) return   false ;    
    
if (d.getHours() != r[ 4 ]) return   false ;    
    
if (d.getMinutes() != r[ 5 ]) return   false ;    
    
if (d.getSeconds() != r[ 6 ]) return   false ;    
    
return   true ;    
}    
// | 把日期分割成数组      
Date.prototype.toArray  =   function ()   
{    
    
var  myDate  =   this ;   
    
var  myArray  =  Array();   
      myArray[
0 =  myDate.getFullYear();   
      myArray[
1 =  myDate.getMonth();   
      myArray[
2 =  myDate.getDate();   
      myArray[
3 =  myDate.getHours();   
      myArray[
4 =  myDate.getMinutes();   
      myArray[
5 =  myDate.getSeconds();   
    
return  myArray;   
}   
// | 取得日期数据信息   
//
| 参数 interval 表示数据类型   
//
| y 年 m月 d日 w星期 ww周 h时 n分 s秒   
Date.prototype.DatePart  =   function (interval)   
{    
    
var  myDate  =   this ;   
    
var  partStr = '' ;   
    
var  Week  =  [ ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' ];   
    
switch  (interval)   
      {    
        
case   ' y '  :partStr  =  myDate.getFullYear(); break ;   
        
case   ' m '  :partStr  =  myDate.getMonth() + 1 ; break ;   
        
case   ' d '  :partStr  =  myDate.getDate(); break ;   
        
case   ' w '  :partStr  =  Week[myDate.getDay()]; break ;   
        
case   ' ww '  :partStr  =  myDate.WeekNumOfYear(); break ;   
        
case   ' h '  :partStr  =  myDate.getHours(); break ;   
        
case   ' n '  :partStr  =  myDate.getMinutes(); break ;   
        
case   ' s '  :partStr  =  myDate.getSeconds(); break ;   
      }   
    
return  partStr;   
}   
   
// | 取得当前日期所在月的最大天数      
Date.prototype.MaxDayOfDate  =   function ()   
{    
    
var  myDate  =   this ;   
    
var  ary  =  myDate.toArray();   
    
var  date1  =  ( new  Date(ary[ 0 ],ary[ 1 ] + 1 , 1 ));   
    
var  date2  =  date1.dateAdd( 1 , ' m ' , 1 );   
    
var  result  =  dateDiff(date1.Format( ' yyyy-MM-dd ' ),date2.Format( ' yyyy-MM-dd ' ));   
    
return  result;   
}   
   
// | 取得当前日期所在周是一年中的第几周      
Date.prototype.WeekNumOfYear  =   function ()   
{    
    
var  myDate  =   this ;   
    
var  ary  =  myDate.toArray();   
    
var  year  =  ary[ 0 ];   
    
var  month  =  ary[ 1 ] + 1 ;   
    
var  day  =  ary[ 2 ];   
      document.write(
' < script language=VBScript\> \n ' );   
      document.write(
' myDate = DateValue( '' +month+ ' - ' +day+ ' - ' +year+ '' ) \n ' );   
      document.write(
' result = DatePart( ' ww ' , myDate) \n ' );   
      document.write(
'  \n ' );   
    
return  result;   
}   
// | 字符串转成日期类型    
//
| 格式 MM/dd/YYYY MM-dd-YYYY YYYY/MM/dd YYYY-MM-dd   
function  StringToDate(DateStr)   
{       
    
var  converted  =  Date.parse(DateStr);   
    
var  myDate  =   new  Date(converted);   
    
if  (isNaN(myDate))   
      {    
        
// var delimCahar = DateStr.indexOf('/')!=-1?'/':'-';   
         var  arys =  DateStr.split( ' - ' );   
          myDate 
=   new  Date(arys[ 0 ], -- arys[ 1 ],arys[ 2 ]);   
      }   
    
return  myDate;   

 

 

你可能感兴趣的:(js)