使用JavaScript内置的Date函数获取日期及时间
new Date ( ) . getYear ( ) ; //获取当前年份(2位)
new Date ( ) . getFullYear ( ) ; //获取完整的年份(4位,1970-????)
new Date ( ) . getMonth ( ) ; //获取当前月份(0-11,0代表1月)
new Date ( ) . getDate ( ) ; //获取当前日(1-31)
new Date ( ) . getDay ( ) ; //获取当前星期X(0-6,0代表星期天)
new Date ( ) . getTime ( ) ; //获取当前时间(从1970.1.1开始的毫秒数)
new Date ( ) . getHours ( ) ; //获取当前小时数(0-23)
new Date ( ) . getMinutes ( ) ; //获取当前分钟数(0-59)
new Date ( ) . getSeconds ( ) ; //获取当前秒数(0-59)
new Date ( ) . getMilliseconds ( ) ; //获取当前毫秒数(0-999)
new Date ( ) . toLocaleDateString ( ) ; //获取当前日期
new Date ( ) . toLocaleTimeString ( ) ; //获取当前时间字符串
new Date ( ) . toLocaleString ( ) ; //获取日期与时间字符串
Date . prototype . isLeapYear = function ( )
{
return ( 0 == this . getYear ( ) % 4 && ( ( this . getYear ( ) 0 != 0 ) || ( this . getYear ( ) @ 0 == 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 ( / y y y y | Y Y Y Y / , this . getFullYear ( ) ) ;
str = str . replace ( / y y | Y Y / , ( this . getYear ( ) % 100 ) > 9 ?( this . getYear ( ) % 100 ) . toString ( ) :'0' + ( this . getYear ( ) % 100 ) ) ;
str = str . replace ( / M M / , 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 ( / d d | D D / , this . getDate ( ) > 9 ?this . getDate ( ) . toString ( ) :'0' + this . getDate ( ) ) ;
str = str . replace ( / d | D / g, this . getDate ( ) ) ;
str = str . replace ( / h h | H H / , this . getHours ( ) > 9 ?this . getHours ( ) . toString ( ) :'0' + this . getHours ( ) ) ;
str = str . replace ( / h | H / g, this . getHours ( ) ) ;
str = str . replace ( / m m / , this . getMinutes ( ) > 9 ?this . getMinutes ( ) . toString ( ) :'0' + this . getMinutes ( ) ) ;
str = str . replace ( / m / g, this . getMinutes ( ) ) ;
str = str . replace ( / s s | S S / , this . getSeconds ( ) > 9 ?this . getSeconds ( ) . toString ( ) :'0' + this . getSeconds ( ) ) ;
str = str . replace ( / s | S / g, this . getSeconds ( ) ) ;
return str ;
}
求两个时间的天数差 日期格式为YYYY-MM-dd
functiondaysBetween ( 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 ( '-' ) ) ;
varcha = ( ( Date . parse ( OneMonth + '/' + OneDay + '/' + OneYear ) - Date . parse ( TwoMonth + '/' + TwoDay + '/' + TwoYear ) ) / 86400000 ) ;
returnMath . 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 ( ) ) ;
}
}
比较日期差 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 ( ) ;
}
}
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
functionIsValidDate ( DateStr )
{
varsDate = 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 = newDate ( 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
functionCheckDateTime ( 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 = newDate ( 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 = ( newDate ( 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/ddYYYY-MM-dd
functionStringToDate ( DateStr )
{
var converted = Date . parse ( DateStr ) ;
var myDate = newDate ( converted ) ;
if ( isNaN ( myDate ) )
{
//var delimCahar= DateStr.indexOf('/')!=-1?'/':'-';
var arys = DateStr . split ( '-' ) ;
myDate = newDate ( arys [ 0 ] , -- arys [ 1 ] , arys [ 2 ] ) ;
}
return myDate ;
}