javascript日期时间函数(全)
( _/ a; H6 l6 ]0 m日期时间脚本库方法列表
# ?: Z3 v: |- O [4 L/ Z% ldate.prototype.isleapyear 判断闰年 i3 j, e6 |/ T1 G* T
date.prototype.format 日期格式化
6 ]+ `4 ]/ `" G6 p; z" u9 E( [date.prototype.dateadd 日期计算
% h, N% P3 u# i8 j1 adate.prototype.datediff 比较日期差8 p- t% M/ p5 }$ F
date.prototype.tostring 日期转字符串
% X( k5 E, B. mdate.prototype.toarray 日期分割为数组' k9 S, a8 U9 ]3 ]' \
date.prototype.datepart 取日期的部分信息
3 K. p! Z4 h ndate.prototype.maxdayofdate 取日期所在月的最大天数
! B6 W5 }+ H9 }2 idate.prototype.weeknumofyear 判断日期所在年的第几周 @- M; i, ~' S
stringtodate 字符串转日期型
]) x2 t3 s" M$ ]6 `isvaliddate 验证日期有效性
4 e, Z( C8 j. U5 l( c& ?checkdatetime 完整日期时间检查8 T! P7 V3 ~8 F7 r0 b( g
daysbetween 日期天数差3 f2 _8 K5 N9 i! |& K* |
js 代码
- K3 B3 C/ S& y4 i/ C" b//--------------------------------------------------- : @. ]8 c$ u2 c8 |* K0 y" m
// 判断闰年
& A6 V/ B" g# M) u//--------------------------------------------------- 3 e" T6 U3 \9 m# Q. p' }, I
date.prototype.isleapyear = function() * g$ l' L1 d! }
{ / `( @* G7 A& c4 W/ w) `( I
return (0==this.getyear()%4&&((this.getyear()%100!=0)||(this.getyear()%400==0))); , s T g0 r1 R4 E
}
( W* O' Y o" k: s6 J1 ~2 g. {//--------------------------------------------------- * V1 z7 m# G: S: S* t/ v
// 日期格式化
2 s0 _; B! x' s* E/ L3 Z4 ?// 格式 yyyy/yyyy/yy/yy 表示年份 1 G2 S& Q' }$ }6 j
// mm/m 月份 2 M4 {2 K: S4 M) a- k2 q
// w/w 星期 n$ M( _& h' V E0 {0 A, D9 Q# r
// dd/dd/d/d 日期
: x6 M% Q) t# a6 }// hh/hh/h/h 时间
+ t5 b% Z! Z2 T// mm/m 分钟
/ E0 n! y) G! C// ss/ss/s/s 秒
3 r( ^3 T, P, h- L//---------------------------------------------------
4 C9 @* _, n: l9 v# ldate.prototype.format = function(formatstr) & D& p" {8 N u- B. `7 Q
{ 8 I, N' H9 Y5 } s7 g8 Y2 y
var str = formatstr; 4 F$ Y" m( w n+ \6 {3 F4 S
var week = ['日','一','二','三','四','五','六']; L5 f3 f3 O- A8 M) P
str=str.replace(/yyyy|yyyy/,this.getfullyear()); . |8 r; a$ W* s5 z1 K
str=str.replace(/yy|yy/,(this.getyear() % 100)>9?(this.getyear() % 100).tostring():'0' + (this.getyear() % 100)); # O1 a1 j1 l/ f, Q: G2 V& a: ] v
str=str.replace(/mm/,this.getmonth()>9?this.getmonth().tostring():'0' + this.getmonth());
( ], ~+ L5 ^, A# ~ str=str.replace(/m/g,this.getmonth());
+ H' s9 W6 f* s* J str=str.replace(/w|w/g,week[this.getday()]); 0 [/ i0 [. [& f, n# x E* p
str=str.replace(/dd|dd/,this.getdate()>9?this.getdate().tostring():'0' + this.getdate()); - p6 I+ s# D3 c0 F/ f
str=str.replace(/d|d/g,this.getdate());
! |, f. y4 B E4 h; O str=str.replace(/hh|hh/,this.gethours()>9?this.gethours().tostring():'0' + this.gethours()); 9 f4 ]8 m) I% [- H& G
str=str.replace(/h|h/g,this.gethours()); 7 f, Y) a* w9 C7 @+ Q
str=str.replace(/mm/,this.getminutes()>9?this.getminutes().tostring():'0' + this.getminutes());
7 f9 c* d& i; d5 W str=str.replace(/m/g,this.getminutes());
8 X+ b. H' b( u2 M0 }8 f: B% S str=str.replace(/ss|ss/,this.getseconds()>9?this.getseconds().tostring():'0' + this.getseconds()); + k8 @+ K+ \: a9 C+ e( U% `
str=str.replace(/s|s/g,this.getseconds());
% k" }. r+ C/ \! r9 W return str; t5 `$ U+ [1 I6 M
}
+ H3 Z+ k$ w% c$ R; E( l//+---------------------------------------------------
; W( T- v; p) N y5 [/ I//| 求两个时间的天数差 日期格式为 yyyy-mm-dd
+ m+ d5 e% g/ Z; h( |2 o. R* v- ]//+--------------------------------------------------- : l5 U" M1 f' ]5 F' ` S8 f6 h7 j
function daysbetween(dateone,datetwo) ! t8 o9 s0 v/ W9 @/ R; [; F4 x
{ + c8 r S% G6 m
var onemonth = dateone.substring(5,dateone.lastindexof ('-'));
9 C% u$ L" y6 Q; ^) i4 B2 o7 F var oneday = dateone.substring(dateone.length,dateone.lastindexof ('-')+1);
& _1 i* \9 S. C7 l: g var oneyear = dateone.substring(0,dateone.indexof ('-'));
/ b7 ?2 D; A7 f var twomonth = datetwo.substring(5,datetwo.lastindexof ('-'));
. g+ }0 C6 B& _: p/ j var twoday = datetwo.substring(datetwo.length,datetwo.lastindexof ('-')+1); $ }5 Z* r; [% e. a
var twoyear = datetwo.substring(0,datetwo.indexof ('-'));
- G+ u5 X0 O9 \6 T0 I var cha=((date.parse(onemonth+'/'+oneday+'/'+oneyear)- date.parse(twomonth+'/'+twoday+'/'+twoyear))/86400000); ' X4 U3 X6 s) c; y
return math.abs(cha);
1 p+ G! ?8 y, u; }, \}
( r, u4 P( B' c( i//+---------------------------------------------------
) [* k6 o5 L C. R/ K4 k6 K9 G. j* q//| 日期计算 / v) a5 T' |! Q; X) X( ^
//+--------------------------------------------------- m# Q, t0 g6 W3 K# c# M' m
date.prototype.dateadd = function(strinterval, number) { / B# g D8 b2 b) x0 _
var dttmp = this; , E& Y2 E' m( K
switch (strinterval) { $ K6 L- i+ I5 ?, k+ E( B
case 's' :return new date(date.parse(dttmp) + (1000 * number)); % e; V2 M0 K) c
case 'n' :return new date(date.parse(dttmp) + (60000 * number)); : Z. p0 a$ e7 X; \# F$ S( U
case 'h' :return new date(date.parse(dttmp) + (3600000 * number)); . }0 R0 A5 M+ a% k
case 'd' :return new date(date.parse(dttmp) + (86400000 * number)); 3 K% i0 ^* T+ W) c; {
case 'w' :return new date(date.parse(dttmp) + ((86400000 * 7) * number));
; [; l1 [0 I) `: d2 P! s case 'q' :return new date(dttmp.getfullyear(), (dttmp.getmonth()) + number*3, dttmp.getdate(), dttmp.gethours(), dttmp.getminutes(), dttmp.getseconds());
- ]* ]( V2 \. H* q5 ^ case 'm' :return new date(dttmp.getfullyear(), (dttmp.getmonth()) + number, dttmp.getdate(), dttmp.gethours(), dttmp.getminutes(), dttmp.getseconds()); 2 r$ }7 ^, s8 U8 S, h7 H
case 'y' :return new date((dttmp.getfullyear() + number), dttmp.getmonth(), dttmp.getdate(), dttmp.gethours(), dttmp.getminutes(), dttmp.getseconds());
. H: i: }* h, ] }
6 X9 x# [- s. G/ N}
2 @ N/ D0 n$ X8 E9 p" A//+---------------------------------------------------
3 Z: o; A8 ~9 x s+ x+ b/ h//| 比较日期差 dtend 格式为日期型或者 有效日期格式字符串 : Z# X! x7 D: E! Y/ I! D2 W
//+--------------------------------------------------- - f7 \- g/ r* M) {
date.prototype.datediff = function(strinterval, dtend) {
( K+ o/ F# Q3 }* O- l9 P var dtstart = this; \# ?' M/ z! N$ Z! m
if (typeof dtend == 'string' )//如果是字符串转换为日期型 , P: k Z# H- u& ?
{ 4 t/ q. `% s% j* v$ w
dtend = stringtodate(dtend);
! k; b4 Y) ^9 S/ H) T }
: \3 Q; Q$ l. z$ { switch (strinterval) {
) {5 g, \! z3 x7 i+ L; q case 's' :return parseint((dtend - dtstart) / 1000);
+ W5 O4 @1 r' Q4 Q( K# I8 |( l* { case 'n' :return parseint((dtend - dtstart) / 60000);
) k- X. p% K/ b4 d case 'h' :return parseint((dtend - dtstart) / 3600000);
0 g" b4 V' ]% U9 g, w+ @1 ~ case 'd' :return parseint((dtend - dtstart) / 86400000);
$ U2 |, ~, h+ T/ X7 ~/ t4 \5 X case 'w' :return parseint((dtend - dtstart) / (86400000 * 7)); 7 k7 y2 P" w. D8 U e2 A& y, T) ^) J
case 'm' :return (dtend.getmonth()+1)+((dtend.getfullyear()-dtstart.getfullyear())*12) - (dtstart.getmonth()+1); 2 [& a; V& G& R
case 'y' :return dtend.getfullyear() - dtstart.getfullyear(); 7 Z8 [) U+ u; y: `0 l! t
}
+ A- N4 t, |$ |8 R0 l}
! k4 x4 H/ ^* i2 @2 g/ u4 o. W: ?; }6 D//+--------------------------------------------------- 5 |- m2 D" W, i% x
//| 日期输出字符串,重载了系统的tostring方法 6 N0 D3 j! u( U& }$ f7 f, `
//+--------------------------------------------------- g8 J' _6 E1 B, ]
date.prototype.tostring = function(showweek)
# v$ d! n6 s' _+ Q' |{ * z" U ^& H8 j6 i }1 q5 M
var mydate= this; " ^( i% f( J4 T4 T/ ^+ e
var str = mydate.tolocaledatestring(); " n/ e6 O- t& ~% ]
if (showweek) $ `! [! C9 K7 W7 h5 K
{
( O6 V$ D( {1 M2 G! o var week = ['日','一','二','三','四','五','六']; 1 D; y% n! ~- ?' ^. P
str += ' 星期' + week[mydate.getday()]; % y" [) t& Y9 \ r
} " }+ x" k, J# P+ z
return str; 5 a" |7 Y: C3 j4 ~8 U! v2 \% \) i5 X
} , k% Y: E4 M \4 C* }
//+---------------------------------------------------
" z4 I+ T* F# [//| 日期合法性验证 Q; I0 t+ w; P6 U8 `' y1 i* c
//| 格式为:yyyy-mm-dd或yyyy/mm/dd
0 q0 m Q- a/ p+ n8 N X# b//+---------------------------------------------------
0 H3 O: E& i$ n+ b# X# W8 [function isvaliddate(datestr)
7 Q! O) D' w0 h- A' A2 r! S( G{
& i* k+ V# g2 T$ |; ~' w' G var sdate=datestr.replace(/(^\s+|\s+$)/g,''); //去两边空格;
a8 w; p3 P: G) m! U if(sdate=='') return true;
2 Z4 ]4 ]% q! m* v% N //如果格式满足yyyy-(/)mm-(/)dd或yyyy-(/)m-(/)dd或yyyy-(/)m-(/)d或yyyy-(/)mm-(/)d就替换为'' ; c6 q3 V! m) r2 {2 D8 z2 ?
//数据库中,合法日期可以是:yyyy-mm/dd(2003-3/21),数据库会自动转换为yyyy-mm-dd格式
+ Y4 H1 q# Y5 v! n' R8 q* d2 S var s = sdate.replace(/[\d]{ 4,4 }[\-/]{ 1 }[\d]{ 1,2 }[\-/]{ 1 }[\d]{ 1,2 }/g,''); ) s. t1 E4 _- R# p
if (s=='') //说明格式满足yyyy-mm-dd或yyyy-m-dd或yyyy-m-d或yyyy-mm-d
" e& G$ b$ B ?5 f) ]8 Z* O {
, B/ t: |8 I3 ~- U4 Q var t=new date(sdate.replace(/\-/g,'/'));
' A J: B7 Q+ P2 W& ?9 C! Q var ar = sdate.split(/[-/:]/);
' y; @# h/ e* L: B) o if(ar[0] != t.getyear() || ar[1] != t.getmonth()+1 || ar[2] != t.getdate()) 6 }8 l1 |- e6 u0 C1 T
{ ) W' J& h Y' X0 L8 H
//alert('错误的日期格式!格式为:yyyy-mm-dd或yyyy/mm/dd。注意闰年。');
0 I3 ?0 A3 F0 {, L% o return false;
/ R8 A. t6 G# j) Z# {* z. M9 U } 9 `) P1 T) [' B. T% p) I
} 4 U1 _: I3 z2 _! M
else , b& A2 ?3 U1 L- |4 l$ w
{ & _* X* n! H' Q! V: [! i: [
//alert('错误的日期格式!格式为:yyyy-mm-dd或yyyy/mm/dd。注意闰年。'); 4 l- c* }8 n( W$ V, m: B
return false; . P# {2 ~! F9 o! l
} - W% G0 V" M/ Y! ]4 R
return true; 1 h( w3 v; h) n/ F5 U/ z( p
} 4 q$ ~# W# K. z! J- P
//+---------------------------------------------------
+ R3 Z3 J8 d6 m5 u//| 日期时间检查
7 G: |! o( l) n//| 格式为:yyyy-mm-dd hh:mm:ss
# M0 T" @( h# M1 d/ ?! J//+---------------------------------------------------
* V: n" B& y. T( }function checkdatetime(str) 4 `, z% k9 O1 O( R- B; H- m
{ 2 a* K5 t& }& S/ h
var reg = /^(\d+)-(\d{ 1,2 })-(\d{ 1,2 }) (\d{ 1,2 }):(\d{ 1,2 }):(\d{ 1,2 })$/;
: C# h3 q& y& j6 J$ p+ d. B var r = str.match(reg);
) T* K* F% c, d; @( w0 z, U if(r==null)return false; ! ]8 }. @# Z* O; M5 P9 N; x
r[2]=r[2]-1; : O$ E$ ^' G' F: A. u$ L: H
var d= new date(r[1],r[2],r[3],r[4],r[5],r[6]);
( F B. I+ _) T0 T$ K" V4 z: H if(d.getfullyear()!=r[1])return false;
# L0 v% j7 \8 }" Q) o5 O8 R0 u if(d.getmonth()!=r[2])return false;
* }2 w8 x- R/ I# K if(d.getdate()!=r[3])return false;
7 L4 F0 }! B! d; @2 `! e if(d.gethours()!=r[4])return false;
/ A% x& O; |9 e8 t& ? if(d.getminutes()!=r[5])return false; # g/ z, }* E7 V
if(d.getseconds()!=r[6])return false; ! t; X. Y+ h( Z; V/ H! S
return true; - `7 Q. l" J, q; J5 [1 g" N
}
. ]4 D1 S/ h. t//+--------------------------------------------------- 6 U+ w4 P; Z2 X4 H( t8 l6 m
//| 把日期分割成数组 + L& |+ O9 l- s; G3 {9 V& p
//+---------------------------------------------------
- f8 C9 B7 }. e/ |date.prototype.toarray = function()
5 g4 S" M, q+ z" l; ?' h{
: ]; l. O5 m _! S var mydate = this; + w L& K) Y n) @; T9 W& S+ _# i1 h
var myarray = array();
# p: I8 i6 @6 \ o9 @ E9 F+ C7 J3 N myarray[0] = mydate.getfullyear(); # }6 O% {9 p' ?' c0 h
myarray[1] = mydate.getmonth(); & a& |2 J$ `! w6 k# O7 U
myarray[2] = mydate.getdate();
( D1 E! J3 T7 J( b myarray[3] = mydate.gethours();
; y; ?$ j* [3 N* G, w myarray[4] = mydate.getminutes(); 0 ?0 j% H* s( ~% e6 |3 G9 v" f
myarray[5] = mydate.getseconds();
' R6 |! m& C) n" P$ u return myarray;
" k; \) ^- @- Y}
7 k+ g8 B; ~( @$ {" G% s( ]//+---------------------------------------------------
9 b! R5 c2 q. k4 b3 `6 _! Y7 N//| 取得日期数据信息 % l: Q% X* U, |. P) `
//| 参数 interval 表示数据类型
3 w3 Z1 @$ `! R- ~+ V2 k5 t( A2 F//| y 年 m月 d日 w星期 ww周 h时 n分 s秒
6 N+ e l' W0 o& H//+--------------------------------------------------- 2 @! @5 h" T, A' x& p: F
date.prototype.datepart = function(interval)
N' p! x" j5 {* `{
4 E! B Z5 Y% V/ |* z) ?/ O var mydate = this;
, a( [% `6 E( u9 |/ K) [* B; k var partstr=''; ! o& t5 z) O+ c* b! T' T5 x
var week = ['日','一','二','三','四','五','六']; " J/ @# R; ]* d) N' `7 h* a6 t/ c
switch (interval) / l! _) K9 ] x0 F; P, {
{
. N @/ x% i* Q* i q8 [ case 'y' :partstr = mydate.getfullyear();break; & t& h4 T$ T! F! n( `1 y5 G/ \
case 'm' :partstr = mydate.getmonth()+1;break;
# S- i$ Q! w1 M; p1 z0 R9 \ case 'd' :partstr = mydate.getdate();break;
% C7 [6 j7 L& D3 L) W! Y) ? case 'w' :partstr = week[mydate.getday()];break; % e: Z6 G) T J* _4 G% L5 F4 w
case 'ww' :partstr = mydate.weeknumofyear();break; / t2 |6 a, ?+ T) r
case 'h' :partstr = mydate.gethours();break;
9 U$ H9 d. Y+ k" d" c/ t z7 } case 'n' :partstr = mydate.getminutes();break;
4 J& G9 d ` U case 's' :partstr = mydate.getseconds();break; + m% B: F; [* b0 f: z' D$ M4 S
} 8 S: H% R% [" g t# L X' O
return partstr; & t/ Z, }( Q( B& B
}
& V1 q2 J9 S5 Q/ Z//+---------------------------------------------------
' [) p7 P0 x4 o$ |6 k+ h! A+ v//| 取得当前日期所在月的最大天数 ! s5 N* T3 v, q2 G4 ]1 |4 s
//+--------------------------------------------------- % D/ y4 Y$ I9 z) _8 }
date.prototype.maxdayofdate = function()
& i+ p5 d% ~9 L5 v8 ?{
& G% [+ _$ g6 e var mydate = this;
6 |" E/ f5 J9 M f$ B var ary = mydate.toarray();
: N3 l# d# b% y- H+ T( g2 d var date1 = (new date(ary[0],ary[1]+1,1));
; s4 D5 s( C+ ?; Y5 c var date2 = date1.dateadd(1,'m',1);
$ V0 R" u: N. r& @* | var result = datediff(date1.format('yyyy-mm-dd'),date2.format('yyyy-mm-dd')); / ?1 U( x0 c2 x" V5 t4 t
return result;
! V+ Y/ V8 T8 ~$ z} - Z- o2 T( q# N$ N- W8 N
//+---------------------------------------------------
2 }8 g) v% U7 {$ o9 n/ L0 V" n6 y//| 取得当前日期所在周是一年中的第几周 0 |# J( t& @3 y
//+--------------------------------------------------- . x1 ]3 b1 c2 E1 G# O
date.prototype.weeknumofyear = function() " I M j' L. a ~1 Z& T. w- x
{ - k; B! ^+ D3 T! D ^3 Q: s
var mydate = this; & j. `% e- u# `0 s$ J8 P
var ary = mydate.toarray();
" v& ~' p0 k+ h" K& K2 d var year = ary[0]; 6 J! C8 I I9 [: c* L! \+ ]- n
var month = ary[1]+1;
; ?+ O' R6 h B" W, { n var day = ary[2]; j" s. A' j9 g* h! r
document.write('< script language=vbscript\> \n'); ; ~2 p$ X* I/ ^# o6 g5 ?
document.write('mydate = datevalue(''+month+'-'+day+'-'+year+'') \n');
9 U& g1 e1 i& e0 l+ u) V O document.write('result = datepart('ww', mydate) \n');
- a* Y( a: U, ^1 c/ ~1 K document.write(' \n'); ' D; H' B' R! Q; H) ~5 a9 H% m1 `
return result; % ]& S C( Q$ |7 \+ M: m! f
}
) I# H( p; u2 ^. y1 r; o//+--------------------------------------------------- ) {4 r3 k* ?* d* @
//| 字符串转成日期类型
+ r: z1 x/ u) l6 t0 e/ r//| 格式 mm/dd/yyyy mm-dd-yyyy yyyy/mm/dd yyyy-mm-dd 5 L( u8 }" ]$ q7 A# p2 _
//+--------------------------------------------------- ; V% V& Q5 m% t8 s5 q) g% ^7 S
function stringtodate(datestr)
/ G: T( I( W3 k4 c{ & b; I4 e; m6 M; R
var converted = date.parse(datestr); . V, s& X( X+ T! c
var mydate = new date(converted);
' r( j ?; t1 [7 Y8 w" ^3 f0 [ if (isnan(mydate)) 0 U/ L; G V8 t6 p* F) M" i0 e# e
{
$ b0 o8 ?3 U1 x6 H //var delimcahar = datestr.indexof('/')!=-1?'/':'-';
2 V* y) ~% i2 ]4 v var arys= datestr.split('-'); 2 |, k2 Y8 O) o! ?$ t
mydate = new date(arys[0],--arys[1],arys[2]); 7 u! F; Y7 E0 a$ l
}
: R& a3 ?4 d/ q+ A% ~( d return mydate; 1 V/ `/ a9 O% m4 J: Z
} ; A, [3 \: T9 m, K, [
; |6 @' E/ w. e7 ~) E更多网页制作信息请查看: 网页制作 |
|