西北郎的Blog
如果对您用帮助,那么我就很乐意继续写!
类似于Java日期格式化的JavaScript实现
1
/**/
/*
*
2
@author:Pancras
3
@version:1.01
4
@date:2008-03-02
5
@methods:
6
DateUtil.getDate(year,month,day) 输入参数为年、月、日,返回一个JS的Date型对象
7
DateUtil.formateDate(pattern,date) 输入参数一个是格式化字符串,比如"yyyy-MM-dd",和JS日期对象,输出格式化后的日期字符串(基本上和Java的格式化类似)
8
DateUtil.formateDateTime(pattern,date) 参数类型同上,但是该方法是在要格式化包含时间的时候使用,如"yyyy-MM-dd HH-mm-ss"
9
DateUtil.isLeapYear(date) 输入一个JS日期型参数,判断该日期所在的年是不是闰年
10
*
*/
11
12
function
DateUtil()
{
13
alert(
"
请不要new这个对象,所有方法都是可以通过DateUtil.方法名来调用
"
);
14
}
15
//
-------------------------------------------
16
//
定义类方法getDate(year,month,day)创建对应的日期对象
17
function
getDate(year,month,day)
18
{
19
var
date
=
new
Date();
20
if
(year)
21
{
22
date.setYear(year);
23
}
24
if
(month)
25
{
26
date.setMonth(month
-
1
);
27
}
28
if
(day)
29
{
30
date.setDate(day);
31
}
32
return
date;
33
}
34
DateUtil.getDate
=
getDate;
35
//
-------------------------------------------
36
//
定义日期时间格式化
37
DateUtil.yearPattern
=
[
new
RegExp(
"
y{4}
"
,
"
g
"
),
new
RegExp(
"
y{3}
"
,
"
g
"
),
new
RegExp(
"
y{2}
"
,
"
g
"
)];
38
DateUtil.monthPattern
=
[
new
RegExp(
"
M{2}
"
,
"
g
"
),
new
RegExp(
"
M{1}
"
,
"
g
"
)];
39
DateUtil.datePattern
=
[
new
RegExp(
"
d{2}
"
,
"
g
"
),
new
RegExp(
"
d{1}
"
,
"
g
"
)];
40
DateUtil.hourPattern
=
[
new
RegExp(
"
H{2}
"
,
"
g
"
),
new
RegExp(
"
H{1}
"
,
"
g
"
),
new
RegExp(
"
h{2}
"
,
"
g
"
),
new
RegExp(
"
h{1}
"
,
"
g
"
)];
41
DateUtil.minutePattern
=
[
new
RegExp(
"
m{2}
"
,
"
g
"
),
new
RegExp(
"
m{1}
"
,
"
g
"
)];
42
DateUtil.secondPattern
=
[
new
RegExp(
"
s{2}
"
,
"
g
"
),
new
RegExp(
"
s{1}
"
,
"
g
"
)];
43
//
格式化年
44
function
formatYear(pattern,year)
45
{
46
var
result
=
pattern.match(DateUtil.yearPattern[
0
]);
47
if
(result
!=
null
)
{
48
pattern
=
pattern.replace(DateUtil.yearPattern[
0
],year);
49
return
pattern;
50
}
else
{
51
52
//
不允许匹配成yyy
53
result
=
pattern.match(DateUtil.yearPattern[
1
]);
54
if
(result
!=
null
)
{
55
throw
"
Unknown pattern:
"
+
pattern;
56
57
}
else
{
58
result
=
pattern.match(DateUtil.yearPattern[
2
]);
59
if
(result
!=
null
)
60
{
61
pattern
=
pattern.replace(DateUtil.yearPattern[
2
],(
""
+
year).substring(
2
,
4
));
62
return
pattern;
63
}
64
}
65
}
66
}
67
//
格式化月
68
function
formatMonth(pattern,month)
69
{
70
71
var
result
=
pattern.match(DateUtil.monthPattern[
0
]);
72
if
(result
!=
null
)
{
73
if
(month
<
10
)
74
{
75
month
=
"
0
"
+
month;
76
}
77
pattern
=
pattern.replace(DateUtil.monthPattern[
0
],month);
78
return
pattern;
79
}
else
80
{
81
result
=
pattern.match(DateUtil.monthPattern[
1
]);
82
if
(result
!=
null
)
{
83
pattern
=
pattern.replace(DateUtil.monthPattern[
1
],month);
84
return
pattern;
85
}
86
else
{
87
throw
"
Unknown pattern:
"
+
pattern;
88
}
89
90
}
91
}
92
//
格式化日期
93
function
formatDay(pattern,day)
94
{
95
96
var
result
=
pattern.match(DateUtil.datePattern[
0
]);
97
if
(result
!=
null
)
{
98
if
(day
<
10
)
99
{
100
day
=
"
0
"
+
day;
101
}
102
pattern
=
pattern.replace(DateUtil.datePattern[
0
],day);
103
return
pattern;
104
}
else
105
{
106
result
=
pattern.match(DateUtil.datePattern[
1
]);
107
if
(result
!=
null
)
{
108
pattern
=
pattern.replace(DateUtil.datePattern[
1
],day);
109
return
pattern;
110
}
111
else
{
112
throw
"
Unknown pattern:
"
+
pattern;
113
}
114
115
}
116
}
117
//
格式化小时
118
function
formatHour(pattern,hour)
119
{
120
var
result
=
pattern.match(DateUtil.hourPattern[
0
]);
121
if
(result
!=
null
)
{
122
if
(hour
<
10
)
123
{
124
hour
=
"
0
"
+
hour;
125
}
126
pattern
=
pattern.replace(DateUtil.hourPattern[
0
],hour);
127
return
pattern;
128
}
else
129
{
130
result
=
pattern.match(DateUtil.hourPattern[
1
]);
131
if
(result
!=
null
)
{
132
pattern
=
pattern.replace(DateUtil.hourPattern[
1
],hour);
133
return
pattern;
134
}
135
else
{
136
result
=
pattern.match(DateUtil.hourPattern[
2
]);
137
if
(result
!=
null
)
{
138
if
(hour
<
10
)
139
{
140
hour
=
"
0
"
+
hour;
141
}
142
if
(hour
>
12
)
143
{
144
hour
=
hour
-
12
;
145
}
146
pattern
=
pattern.replace(DateUtil.hourPattern[
2
],hour);
147
return
pattern;
148
}
else
{
149
result
=
pattern.match(DateUtil.hourPattern[
3
]);
150
if
(result
!=
null
)
{
151
if
(hour
>
12
)
152
{
153
hour
=
hour
-
12
;
154
}
155
pattern
=
pattern.replace(DateUtil.hourPattern[
3
],hour);
156
return
pattern;
157
}
else
{
158
throw
"
Unknown pattern:
"
+
pattern;
159
}
160
}
161
162
}
163
}
164
}
165
//
格式化分钟
166
function
formatMinute(pattern,minute)
167
{
168
169
var
result
=
pattern.match(DateUtil.minutePattern[
0
]);
170
if
(result
!=
null
)
{
171
if
(minute
<
10
)
172
{
173
minute
=
"
0
"
+
minute;
174
}
175
pattern
=
pattern.replace(DateUtil.minutePattern[
0
],minute);
176
return
pattern;
177
}
else
178
{
179
result
=
pattern.match(DateUtil.minutePattern[
1
]);
180
if
(result
!=
null
)
{
181
pattern
=
pattern.replace(DateUtil.minutePattern[
1
],minute);
182
return
pattern;
183
}
184
else
{
185
throw
"
Unknown pattern:
"
+
pattern;
186
}
187
188
}
189
}
190
//
格式化秒
191
function
formatSecond(pattern,second)
192
{
193
194
var
result
=
pattern.match(DateUtil.secondPattern[
0
]);
195
if
(result
!=
null
)
{
196
if
(second
<
10
)
197
{
198
second
=
"
0
"
+
second;
199
}
200
pattern
=
pattern.replace(DateUtil.secondPattern[
0
],second);
201
return
pattern;
202
}
else
203
{
204
result
=
pattern.match(DateUtil.secondPattern[
1
]);
205
if
(result
!=
null
)
{
206
pattern
=
pattern.replace(DateUtil.secondPattern[
1
],second);
207
return
pattern;
208
}
209