javascript日期时间函数(全)
! P9 |, q6 b3 K. Z. M日期时间脚本库方法列表9 J9 {" \" o! g) ]% N
date.prototype.isleapyear 判断闰年
: L+ K! T, K$ h& h5 t% J* ^# ?date.prototype.format 日期格式化) c) u- b& c5 m3 I
date.prototype.dateadd 日期计算
) P/ t& y% q, Adate.prototype.datediff 比较日期差
G, C. V, ~. zdate.prototype.tostring 日期转字符串
! j8 z3 [$ P g7 L( B& b6 i7 {date.prototype.toarray 日期分割为数组) c( E" H6 N6 X# l0 `5 y4 N& k
date.prototype.datepart 取日期的部分信息( c9 a6 j# B1 o0 l: x
date.prototype.maxdayofdate 取日期所在月的最大天数' H; I, B, \* h9 _* t' t7 i
date.prototype.weeknumofyear 判断日期所在年的第几周4 r$ R/ a4 z2 S+ \6 K5 g3 m
stringtodate 字符串转日期型
$ \$ ]# b5 C$ Zisvaliddate 验证日期有效性
- a5 D6 \! E3 h2 A; B$ O) }: Ocheckdatetime 完整日期时间检查
9 R) n( M$ a% a9 g( M6 X9 Udaysbetween 日期天数差
2 A. T9 |1 p2 s+ a2 U1 ]js 代码
- e5 }6 ^- V. ~3 D( u//---------------------------------------------------
6 h' N/ `8 m% D' F5 K// 判断闰年
) C- S% u) B: d//---------------------------------------------------
9 j3 ~5 y$ n2 C9 p3 Sdate.prototype.isleapyear = function() 8 c* X- I# Z* H8 ^* w: O
{
2 a1 o# E) L& x+ `# ~2 c: ~ return (0==this.getyear()%4&&((this.getyear()%100!=0)||(this.getyear()%400==0)));
9 S$ K- o5 N/ ]# P: r8 s" p( e( N* k* L}
5 h4 V) M" O( G//---------------------------------------------------
7 D6 F( ~ z( f- z! q4 h// 日期格式化
" b$ @; t% m7 Z$ }& _// 格式 yyyy/yyyy/yy/yy 表示年份 0 ~: g ?! z0 u+ V% [* ?0 A& @6 x; R
// mm/m 月份
4 j6 G; q/ z! ~" J// w/w 星期 + C# |9 T5 \6 L4 o
// dd/dd/d/d 日期 ( o( g K7 C! [8 w* X: F4 `+ J) L
// hh/hh/h/h 时间
( V) M( v. u. A; E// mm/m 分钟 2 W( O7 K4 B7 V L B5 z/ Y
// ss/ss/s/s 秒
- y5 k. }: x; b( y% y//--------------------------------------------------- 9 V# s/ R$ I- p6 @6 w% {* X
date.prototype.format = function(formatstr)
: @* x1 r* }) q0 G. s{
0 T( o# J1 w) d& ]4 a' l1 a var str = formatstr;
3 p6 h" w8 b+ |7 ^. h var week = ['日','一','二','三','四','五','六'];
: Y6 V! P! x# n: D6 s str=str.replace(/yyyy|yyyy/,this.getfullyear());
4 P* x" S3 H* y str=str.replace(/yy|yy/,(this.getyear() % 100)>9?(this.getyear() % 100).tostring():'0' + (this.getyear() % 100)); - ~' A. F. y3 k7 N
str=str.replace(/mm/,this.getmonth()>9?this.getmonth().tostring():'0' + this.getmonth());
4 ~5 s6 L+ K7 U. I" a; R( {- e str=str.replace(/m/g,this.getmonth());
8 ?* i, ^9 l) [ str=str.replace(/w|w/g,week[this.getday()]); 4 P, a6 P x: {1 ?6 E
str=str.replace(/dd|dd/,this.getdate()>9?this.getdate().tostring():'0' + this.getdate());
& {% z7 o1 o3 Z( e str=str.replace(/d|d/g,this.getdate()); % s+ A2 _! H6 w' q! R% g0 P
str=str.replace(/hh|hh/,this.gethours()>9?this.gethours().tostring():'0' + this.gethours()); 2 g) w8 L% N$ s1 _% \
str=str.replace(/h|h/g,this.gethours()); ! e: o" |; S0 r3 l! y u
str=str.replace(/mm/,this.getminutes()>9?this.getminutes().tostring():'0' + this.getminutes()); 6 K0 v8 ?# l) ?, |+ P* b6 R. e
str=str.replace(/m/g,this.getminutes()); ! R% _ F5 z2 m! T0 B5 ^
str=str.replace(/ss|ss/,this.getseconds()>9?this.getseconds().tostring():'0' + this.getseconds());
8 _) m0 M; O: |6 ]2 B) F6 {! v) l. z str=str.replace(/s|s/g,this.getseconds()); 8 e- y, H, ]! _$ ?, w( ]7 e
return str;
& i- z+ |4 N6 y. f} ; ~1 C* u. t+ s$ l- f
//+---------------------------------------------------
5 z6 I& G* \: |. t& {* T//| 求两个时间的天数差 日期格式为 yyyy-mm-dd
; g" p' Z, s% y- v+ u//+--------------------------------------------------- , R* m& } _0 p# V1 G' S+ h
function daysbetween(dateone,datetwo)
. ^# H: O7 X* V3 ]. O* L7 m{ 7 _5 r. \/ ]7 ^7 E
var onemonth = dateone.substring(5,dateone.lastindexof ('-'));
- k4 Y. d$ ~ N2 U var oneday = dateone.substring(dateone.length,dateone.lastindexof ('-')+1);
4 b/ B8 K j* P5 s0 a$ X4 v) b var oneyear = dateone.substring(0,dateone.indexof ('-'));
6 Q1 w3 `8 }$ p, \/ y# T var twomonth = datetwo.substring(5,datetwo.lastindexof ('-')); - W$ ?7 [8 h. g2 E
var twoday = datetwo.substring(datetwo.length,datetwo.lastindexof ('-')+1);
{9 l$ B L/ _6 D0 \8 Y var twoyear = datetwo.substring(0,datetwo.indexof ('-')); 6 k3 ]' t# s# m# M) U! L! @
var cha=((date.parse(onemonth+'/'+oneday+'/'+oneyear)- date.parse(twomonth+'/'+twoday+'/'+twoyear))/86400000);
0 n4 C" q& p. j* }- U return math.abs(cha);
2 W4 m. {; _+ _3 Q} ! C0 O) y9 x# \
//+--------------------------------------------------- 3 y3 r' c$ l# g- r2 p' Z. `5 s# @
//| 日期计算
6 g( W2 Z& m s) u$ P/ M# b//+--------------------------------------------------- + o* t( ]1 r. {+ S' D9 j' n7 Q
date.prototype.dateadd = function(strinterval, number) { / {$ p% _$ t; g0 c* I# R6 {2 m
var dttmp = this; # `* @( ]1 c6 S
switch (strinterval) { / Q+ \4 s" f% `/ c" U
case 's' :return new date(date.parse(dttmp) + (1000 * number));
# U' B7 n; l3 V case 'n' :return new date(date.parse(dttmp) + (60000 * number));
5 }7 Q+ i9 s( y U' ]# N; d case 'h' :return new date(date.parse(dttmp) + (3600000 * number)); 0 \# P+ i7 s+ X3 M. t, ]& u
case 'd' :return new date(date.parse(dttmp) + (86400000 * number));
1 M' H1 l0 k u case 'w' :return new date(date.parse(dttmp) + ((86400000 * 7) * number)); 1 V+ R- |+ ]( U! b* \" F; s+ \* U
case 'q' :return new date(dttmp.getfullyear(), (dttmp.getmonth()) + number*3, dttmp.getdate(), dttmp.gethours(), dttmp.getminutes(), dttmp.getseconds()); ) @0 O4 g) e+ K+ @/ d. d
case 'm' :return new date(dttmp.getfullyear(), (dttmp.getmonth()) + number, dttmp.getdate(), dttmp.gethours(), dttmp.getminutes(), dttmp.getseconds()); & F$ Y& a0 ^* g+ M, T. J) T8 j
case 'y' :return new date((dttmp.getfullyear() + number), dttmp.getmonth(), dttmp.getdate(), dttmp.gethours(), dttmp.getminutes(), dttmp.getseconds());
0 x% Y7 _# V8 K0 X4 x } ; r! l- M( ]# L' ~5 U
}
4 j5 t8 D; W6 ^//+---------------------------------------------------
) p5 y8 l; T* [$ V6 x//| 比较日期差 dtend 格式为日期型或者 有效日期格式字符串 3 s3 X4 \1 @# `$ A( i
//+--------------------------------------------------- , m5 s) _8 D4 \% a! a5 C1 x
date.prototype.datediff = function(strinterval, dtend) { 9 |7 Q/ S2 T3 C/ k
var dtstart = this; ( T' T, @2 I$ C
if (typeof dtend == 'string' )//如果是字符串转换为日期型 * L# H t* c- r/ ?1 C- ]- j$ ]
{
3 a+ `6 b# `. Y$ D3 z dtend = stringtodate(dtend); , E# y% i2 o/ O4 S* s6 F: T: |
}
( r& F/ c& U8 ?) |5 `) k. |2 ^9 T switch (strinterval) { " w, j6 S& ]8 j/ N
case 's' :return parseint((dtend - dtstart) / 1000); - k, R; h. a9 B5 b1 M
case 'n' :return parseint((dtend - dtstart) / 60000); % o9 ~: {( ~ L$ j5 h0 ~8 F# y
case 'h' :return parseint((dtend - dtstart) / 3600000); f# ^0 w* p$ n' ^, U
case 'd' :return parseint((dtend - dtstart) / 86400000); " Z! b1 N0 \ [2 o- x6 t/ z
case 'w' :return parseint((dtend - dtstart) / (86400000 * 7));
% Y; {( Y( G/ l7 w0 q' J case 'm' :return (dtend.getmonth()+1)+((dtend.getfullyear()-dtstart.getfullyear())*12) - (dtstart.getmonth()+1);
) ?) K/ @4 x; t; B case 'y' :return dtend.getfullyear() - dtstart.getfullyear(); 3 E& s$ L' O4 s& J+ T! `2 M
}
% i0 S' B0 r+ P/ i} ( a. C/ g6 n; F% s) H
//+--------------------------------------------------- + X9 x8 l' e; n& @, ^
//| 日期输出字符串,重载了系统的tostring方法
' _* G) B8 f; n `//+---------------------------------------------------
/ @- ?; y" F" k* W6 tdate.prototype.tostring = function(showweek) / ?9 v1 d# w: |
{
8 N- q6 B# p) X0 m var mydate= this; ; J9 B5 v% X. f# i+ O
var str = mydate.tolocaledatestring(); 0 H& R/ ?4 ^0 j5 d
if (showweek) 0 G0 w+ W! d2 o
{ $ U* F. y9 R" B. \" A% |9 N- i- ~ C
var week = ['日','一','二','三','四','五','六']; ' L8 Z" Y0 ?: Y& C
str += ' 星期' + week[mydate.getday()];
1 ?) ~! f# d0 y& Z7 @) h$ _) ` }
5 g+ }4 o8 j0 Y: C* n# j return str;
+ H7 o8 L0 o1 B4 P* g, Y}
. [+ L& H+ R6 B//+--------------------------------------------------- ; F% T% r, e5 S* L7 _
//| 日期合法性验证
# {3 m/ D# @/ E2 ~. W//| 格式为:yyyy-mm-dd或yyyy/mm/dd
% M/ l1 u# r1 F% d7 x/ o//+---------------------------------------------------
% d+ q D# t7 Dfunction isvaliddate(datestr) 4 v2 d! g2 S7 h" R# B
{
4 J& T" L2 p5 N& B& w8 ] var sdate=datestr.replace(/(^\s+|\s+$)/g,''); //去两边空格; " N) S8 u: b% C. X( k
if(sdate=='') return true;
$ V4 i( r/ }" v. W. a //如果格式满足yyyy-(/)mm-(/)dd或yyyy-(/)m-(/)dd或yyyy-(/)m-(/)d或yyyy-(/)mm-(/)d就替换为''
' j; @; i3 N+ c/ c$ I$ l //数据库中,合法日期可以是:yyyy-mm/dd(2003-3/21),数据库会自动转换为yyyy-mm-dd格式
! X( h: k1 @ u var s = sdate.replace(/[\d]{ 4,4 }[\-/]{ 1 }[\d]{ 1,2 }[\-/]{ 1 }[\d]{ 1,2 }/g,'');
' t4 o: `$ h, _- S& ~2 _% H if (s=='') //说明格式满足yyyy-mm-dd或yyyy-m-dd或yyyy-m-d或yyyy-mm-d * R3 X& n" r" v# A4 R r
{ 3 Z. r; \+ t% r; d$ E8 O; c# J
var t=new date(sdate.replace(/\-/g,'/'));
" C, }# o j( J var ar = sdate.split(/[-/:]/); 0 N5 `. L1 U# c; [
if(ar[0] != t.getyear() || ar[1] != t.getmonth()+1 || ar[2] != t.getdate())
; ?, a. m R6 S {
S0 M) `+ A: Z5 {7 ~9 u0 S //alert('错误的日期格式!格式为:yyyy-mm-dd或yyyy/mm/dd。注意闰年。');
* w! Q. j4 x- ~ return false;
3 D: O# R5 M+ j) R5 E5 k8 j }
% z- e: I" W+ O& B8 e6 n9 v- m4 c } , D0 p1 x8 p6 Y+ D9 L3 `
else
' k/ ^; c' L3 d7 _3 y { & S/ s* N3 ]5 x8 _! ^0 `2 R P
//alert('错误的日期格式!格式为:yyyy-mm-dd或yyyy/mm/dd。注意闰年。'); 0 J- r% P- ~( T+ s
return false;
) Y5 w3 n& F7 u: W: R) q } 1 d* u1 `5 c( r; r# q2 g
return true; + U5 D v: ~. e3 T- Z [
} # `6 z: L# C/ M. P1 ~' g
//+--------------------------------------------------- 3 I4 D! _( h4 ^
//| 日期时间检查
# h& V# M- A8 b7 g7 F, Q//| 格式为:yyyy-mm-dd hh:mm:ss 5 n" k: a; Z' H( N0 k4 ?
//+---------------------------------------------------
/ A9 l- {: i: Q8 Q( S4 b; ufunction checkdatetime(str) 3 x8 P9 K; ^* S0 |6 ?5 C7 E1 w
{ ( U# J& `9 x. I3 z% x' D8 G
var reg = /^(\d+)-(\d{ 1,2 })-(\d{ 1,2 }) (\d{ 1,2 }):(\d{ 1,2 }):(\d{ 1,2 })$/;
) `5 E U! V3 }$ T% g t, @ var r = str.match(reg);
& V0 _" a3 D* B5 @ o- x4 Q if(r==null)return false;
. K3 u# Y( T* ~) G; I* a r[2]=r[2]-1; ; _' w v# E/ K) W7 G' f3 @; `
var d= new date(r[1],r[2],r[3],r[4],r[5],r[6]); , {2 R: M& G- U8 z+ o" o
if(d.getfullyear()!=r[1])return false;
) c% d3 m& V! K( P2 A5 ` if(d.getmonth()!=r[2])return false;
: `9 `; [1 K* B. d; ~ if(d.getdate()!=r[3])return false; 2 d) Q1 C) b( C3 r* C! c* _- W
if(d.gethours()!=r[4])return false; 3 f1 u3 J" f# v- c5 ?4 Y2 z
if(d.getminutes()!=r[5])return false; , W; r" F/ y* H; J& E2 b3 n
if(d.getseconds()!=r[6])return false;
* j+ X* j) a- j4 X4 X return true;
" r8 c4 _3 y4 O' R8 J5 ^& n6 ?" }} & n; S9 d& n8 g# M2 L; L
//+---------------------------------------------------
4 v; ~6 C3 [# I+ G! @//| 把日期分割成数组 5 D4 q3 ~8 G0 Z2 n, _
//+--------------------------------------------------- 5 b: H6 I; N; I4 [- m) G
date.prototype.toarray = function()
6 j3 L9 c/ v5 B+ F{ " T; w4 E P* {+ ]8 J
var mydate = this;
# ~, I6 p T, W* u; m( s: z3 e var myarray = array();
" ]2 b+ D0 F, M; N myarray[0] = mydate.getfullyear();
. I. R8 d: [) J" j+ V' X/ f myarray[1] = mydate.getmonth(); 8 ]1 j& ^1 `& I: R. v4 X3 e
myarray[2] = mydate.getdate(); 3 f% G6 {, W; s4 f$ ?( I
myarray[3] = mydate.gethours();
0 T! G* i" z7 G' i0 v9 K myarray[4] = mydate.getminutes();
0 X+ p/ `) j6 J! N; U myarray[5] = mydate.getseconds();
7 k, X7 A1 b' Q0 f" K return myarray;
# ^6 j' f5 C9 i% n' `# P}
N- {( y8 a! @ C E% p//+--------------------------------------------------- : Y. w" \2 Y7 U2 ]$ K1 _4 J9 I8 Z
//| 取得日期数据信息
5 [5 g- ^ h& D @//| 参数 interval 表示数据类型 6 A% c1 z& {( ]2 `8 h
//| y 年 m月 d日 w星期 ww周 h时 n分 s秒
+ }! n6 B2 u4 i$ C//+---------------------------------------------------
) }3 U0 w x c# c* j" u& u0 ldate.prototype.datepart = function(interval)
2 p/ P5 h; I' H1 H9 d/ B{ 8 M5 T# u# c& n5 m. |. D& G
var mydate = this; / o: b3 L. k+ t$ M' h8 m7 ~
var partstr=''; 9 i$ C6 }% B# ] G$ U
var week = ['日','一','二','三','四','五','六'];
$ M& ]# }( l4 R# ` switch (interval) ) ^; I) H$ K4 A5 t- L
{ , q+ q. M3 D" p9 q: F
case 'y' :partstr = mydate.getfullyear();break;
* d( R0 L, ]& C! B case 'm' :partstr = mydate.getmonth()+1;break; & o7 O# N( b+ Q
case 'd' :partstr = mydate.getdate();break;
. }' R8 r# J) T/ ]8 {& _ case 'w' :partstr = week[mydate.getday()];break;
: m2 \* C9 |# W/ I$ U( X! Q case 'ww' :partstr = mydate.weeknumofyear();break;
t9 X1 W. V8 ~" w F case 'h' :partstr = mydate.gethours();break; / q X& c- ]- }0 Z
case 'n' :partstr = mydate.getminutes();break;
% h" [# ]& Y: w# I( T9 k case 's' :partstr = mydate.getseconds();break; - [" ~6 C/ x8 r
} + [" Z9 m2 M5 D1 R
return partstr; & ]+ L( u! M, k& C3 {
}
1 _) S' C8 o+ j//+---------------------------------------------------
4 N) t4 E+ p" U% t h//| 取得当前日期所在月的最大天数 ; _" `; J* l( H" t' V9 @
//+--------------------------------------------------- / j1 J7 }" w- ?/ Y# O! o
date.prototype.maxdayofdate = function() , J% a6 F- b$ E8 A& K% X8 a
{ 2 z0 M+ m. g0 \$ B9 X
var mydate = this; ; L6 `: z! j" \2 }0 p( ]
var ary = mydate.toarray(); * ^- ?6 U% C7 `/ \5 h
var date1 = (new date(ary[0],ary[1]+1,1)); ! l9 |# |% }6 n( D9 [
var date2 = date1.dateadd(1,'m',1);
0 O& b2 Z! ]: |( B e var result = datediff(date1.format('yyyy-mm-dd'),date2.format('yyyy-mm-dd'));
) M0 c, `: B: y a) M/ p return result;
; k2 S) E5 y! {& b} ( X( L7 ~+ `) N
//+--------------------------------------------------- % w6 Z) ], b4 q$ V( Y0 k7 j+ T
//| 取得当前日期所在周是一年中的第几周 ; z" \$ f8 S5 x, f- N* ]
//+---------------------------------------------------
& L% w# v2 V% R: ]0 e3 H1 S* Sdate.prototype.weeknumofyear = function() ! l* b3 e1 Z) {+ f& G& a
{ , t4 v6 [3 _6 {' U; K" p+ K3 m
var mydate = this; . _5 E+ j3 I) ]) c
var ary = mydate.toarray(); e2 r3 m, Z" u% `$ M
var year = ary[0]; ! ?& y( b3 ^6 s4 i
var month = ary[1]+1;
+ t/ M9 T6 I X: z var day = ary[2]; $ m: V1 E3 r9 ~, }& d6 S$ O
document.write('< script language=vbscript\> \n');
. D! Z( E8 W1 d# K+ A document.write('mydate = datevalue(''+month+'-'+day+'-'+year+'') \n'); & e% s' f# M; Q0 ~8 J
document.write('result = datepart('ww', mydate) \n');
" g: f3 i, Q; L. Z+ ?* X% U# P% O document.write(' \n'); $ q5 |8 L8 Y1 u _- V
return result; 3 a# D+ t5 G6 Z( u: K
}
' b$ b& D5 l. ]* `2 u6 B: ]//+---------------------------------------------------
# Z3 l7 Z( b3 Z: |0 F8 v% a//| 字符串转成日期类型 ! H& z& l& X- q" K% U" ~9 y
//| 格式 mm/dd/yyyy mm-dd-yyyy yyyy/mm/dd yyyy-mm-dd : h! Z0 y) U& c% v' M( W' ~ H, n
//+---------------------------------------------------
( a8 Z0 V9 j" Nfunction stringtodate(datestr) : d1 b$ ~4 S8 [2 H
{
/ I. ^: A4 I8 @ var converted = date.parse(datestr); . ~8 F* n2 L9 M) x8 p3 t
var mydate = new date(converted); 4 v1 r5 e9 S/ ]1 m9 V0 P& Y
if (isnan(mydate))
7 h. W: t! {- M" e { : k& I1 A1 h, [8 z9 s1 d. i
//var delimcahar = datestr.indexof('/')!=-1?'/':'-'; 5 c& B1 O8 R( p' g: X$ z3 S$ t& n
var arys= datestr.split('-');
, ?' M6 j3 ^* v9 \# B mydate = new date(arys[0],--arys[1],arys[2]);
. H/ w9 F/ w, ]8 R# r }
9 `& c9 G; A4 f return mydate;
# O: U' q4 |) E0 H7 H}
8 f ]6 s' O# f5 F9 S, p0 }( p! [7 W
8 x: h) ^2 C# r% V4 \. p更多网页制作信息请查看: 网页制作 |
|