日期时间脚本库方法列表
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;
}