1
|
/*
|
2
|
Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved.
|
3
|
Available via Academic Free License >= 2.1 OR the modified BSD license.
|
4
|
see: http://dojotoolkit.org/license for details
|
5
|
*/
|
6
|
|
7
|
|
8
|
if(!dojo._hasResource["dojo.date"]){
|
9
|
dojo._hasResource["dojo.date"]=true;
|
10
|
dojo.provide("dojo.date");
|
11
|
dojo.date.getDaysInMonth=function(_1){
|
12
|
var _2=_1.getMonth();
|
13
|
var _3=[31,28,31,30,31,30,31,31,30,31,30,31];
|
14
|
if(_2==1&&dojo.date.isLeapYear(_1)){
|
15
|
return 29;
|
16
|
}
|
17
|
return _3[_2];
|
18
|
};
|
19
|
dojo.date.isLeapYear=function(_4){
|
20
|
var _5=_4.getFullYear();
|
21
|
return !(_5%400)||(!(_5%4)&&!!(_5%100));
|
22
|
};
|
23
|
dojo.date.getTimezoneName=function(_6){
|
24
|
var _7=_6.toString();
|
25
|
var tz="";
|
26
|
var _9;
|
27
|
var _a=_7.indexOf("(");
|
28
|
if(_a>-1){
|
29
|
tz=_7.substring(++_a,_7.indexOf(")"));
|
30
|
}else{
|
31
|
var _b=/([A-Z\/]+) \d{4}$/;
|
32
|
if((_9=_7.match(_b))){
|
33
|
tz=_9[1];
|
34
|
}else{
|
35
|
_7=_6.toLocaleString();
|
36
|
_b=/ ([A-Z\/]+)$/;
|
37
|
if((_9=_7.match(_b))){
|
38
|
tz=_9[1];
|
39
|
}
|
40
|
}
|
41
|
}
|
42
|
return (tz=="AM"||tz=="PM")?"":tz;
|
43
|
};
|
44
|
dojo.date.compare=function(_c,_d,_e){
|
45
|
_c=new Date(Number(_c));
|
46
|
_d=new Date(Number(_d||new Date()));
|
47
|
if(_e!=="undefined"){
|
48
|
if(_e=="date"){
|
49
|
_c.setHours(0,0,0,0);
|
50
|
_d.setHours(0,0,0,0);
|
51
|
}else{
|
52
|
if(_e=="time"){
|
53
|
_c.setFullYear(0,0,0);
|
54
|
_d.setFullYear(0,0,0);
|
55
|
}
|
56
|
}
|
57
|
}
|
58
|
if(_c>_d){
|
59
|
return 1;
|
60
|
}
|
61
|
if(_c<_d){
|
62
|
return -1;
|
63
|
}
|
64
|
return 0;
|
65
|
};
|
66
|
dojo.date.add=function(_f,_10,_11){
|
67
|
var sum=new Date(Number(_f));
|
68
|
var _13=false;
|
69
|
var _14="Date";
|
70
|
switch(_10){
|
71
|
case "day":
|
72
|
break;
|
73
|
case "weekday":
|
74
|
var _15,_16;
|
75
|
var mod=_11%5;
|
76
|
if(!mod){
|
77
|
_15=(_11>0)?5:-5;
|
78
|
_16=(_11>0)?((_11-5)/5):((_11+5)/5);
|
79
|
}else{
|
80
|
_15=mod;
|
81
|
_16=parseInt(_11/5);
|
82
|
}
|
83
|
var _18=_f.getDay();
|
84
|
var adj=0;
|
85
|
if(_18==6&&_11>0){
|
86
|
adj=1;
|
87
|
}else{
|
88
|
if(_18==0&&_11<0){
|
89
|
adj=-1;
|
90
|
}
|
91
|
}
|
92
|
var _1a=_18+_15;
|
93
|
if(_1a==0||_1a==6){
|
94
|
adj=(_11>0)?2:-2;
|
95
|
}
|
96
|
_11=(7*_16)+_15+adj;
|
97
|
break;
|
98
|
case "year":
|
99
|
_14="FullYear";
|
100
|
_13=true;
|
101
|
break;
|
102
|
case "week":
|
103
|
_11*=7;
|
104
|
break;
|
105
|
case "quarter":
|
106
|
_11*=3;
|
107
|
case "month":
|
108
|
_13=true;
|
109
|
_14="Month";
|
110
|
break;
|
111
|
case "hour":
|
112
|
case "minute":
|
113
|
case "second":
|
114
|
case "millisecond":
|
115
|
_14="UTC"+_10.charAt(0).toUpperCase()+_10.substring(1)+"s";
|
116
|
}
|
117
|
if(_14){
|
118
|
sum["set"+_14](sum["get"+_14]()+_11);
|
119
|
}
|
120
|
if(_13&&(sum.getDate()<_f.getDate())){
|
121
|
sum.setDate(0);
|
122
|
}
|
123
|
return sum;
|
124
|
};
|
125
|
dojo.date.difference=function(_1b,_1c,_1d){
|
126
|
_1c=_1c||new Date();
|
127
|
_1d=_1d||"day";
|
128
|
var _1e=_1c.getFullYear()-_1b.getFullYear();
|
129
|
var _1f=1;
|
130
|
switch(_1d){
|
131
|
case "quarter":
|
132
|
var m1=_1b.getMonth();
|
133
|
var m2=_1c.getMonth();
|
134
|
var q1=Math.floor(m1/3)+1;
|
135
|
var q2=Math.floor(m2/3)+1;
|
136
|
q2+=(_1e*4);
|
137
|
_1f=q2-q1;
|
138
|
break;
|
139
|
case "weekday":
|
140
|
var _24=Math.round(dojo.date.difference(_1b,_1c,"day"));
|
141
|
var _25=parseInt(dojo.date.difference(_1b,_1c,"week"));
|
142
|
var mod=_24%7;
|
143
|
if(mod==0){
|
144
|
_24=_25*5;
|
145
|
}else{
|
146
|
var adj=0;
|
147
|
var _28=_1b.getDay();
|
148
|
var _29=_1c.getDay();
|
149
|
_25=parseInt(_24/7);
|
150
|
mod=_24%7;
|
151
|
var _2a=new Date(_1b);
|
152
|
_2a.setDate(_2a.getDate()+(_25*7));
|
153
|
var _2b=_2a.getDay();
|
154
|
if(_24>0){
|
155
|
switch(true){
|
156
|
case _28==6:
|
157
|
adj=-1;
|
158
|
break;
|
159
|
case _28==0:
|
160
|
adj=0;
|
161
|
break;
|
162
|
case _29==6:
|
163
|
adj=-1;
|
164
|
break;
|
165
|
case _29==0:
|
166
|
adj=-2;
|
167
|
break;
|
168
|
case (_2b+mod)>5:
|
169
|
adj=-2;
|
170
|
}
|
171
|
}else{
|
172
|
if(_24<0){
|
173
|
switch(true){
|
174
|
case _28==6:
|
175
|
adj=0;
|
176
|
break;
|
177
|
case _28==0:
|
178
|
adj=1;
|
179
|
break;
|
180
|
case _29==6:
|
181
|
adj=2;
|
182
|
break;
|
183
|
case _29==0:
|
184
|
adj=1;
|
185
|
break;
|
186
|
case (_2b+mod)<0:
|
187
|
adj=2;
|
188
|
}
|
189
|
}
|
190
|
}
|
191
|
_24+=adj;
|
192
|
_24-=(_25*2);
|
193
|
}
|
194
|
_1f=_24;
|
195
|
break;
|
196
|
case "year":
|
197
|
_1f=_1e;
|
198
|
break;
|
199
|
case "month":
|
200
|
_1f=(_1c.getMonth()-_1b.getMonth())+(_1e*12);
|
201
|
break;
|
202
|
case "week":
|
203
|
_1f=parseInt(dojo.date.difference(_1b,_1c,"day")/7);
|
204
|
break;
|
205
|
case "day":
|
206
|
_1f/=24;
|
207
|
case "hour":
|
208
|
_1f/=60;
|
209
|
case "minute":
|
210
|
_1f/=60;
|
211
|
case "second":
|
212
|
_1f/=1000;
|
213
|
case "millisecond":
|
214
|
_1f*=_1c.getTime()-_1b.getTime();
|
215
|
}
|
216
|
return Math.round(_1f);
|
217
|
};
|
218
|
}
|