root / trunk / web / dojo / dojox / date / posix.js
History | View | Annotate | Download (4.51 KB)
1 |
/*
|
---|---|
2 |
Copyright (c) 2004-2010, 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["dojox.date.posix"]){ |
9 |
dojo._hasResource["dojox.date.posix"]=true; |
10 |
dojo.provide("dojox.date.posix");
|
11 |
dojo.require("dojo.date");
|
12 |
dojo.require("dojo.date.locale");
|
13 |
dojo.require("dojo.string");
|
14 |
dojox.date.posix.strftime=function(_1,_2,_3){ |
15 |
var _4=null; |
16 |
var _5=function(s,n){ |
17 |
return dojo.string.pad(s,n||2,_4||"0"); |
18 |
}; |
19 |
var _6=dojo.date.locale._getGregorianBundle(_3);
|
20 |
var $=function(_7){ |
21 |
switch(_7){
|
22 |
case "a": |
23 |
return dojo.date.locale.getNames("days","abbr","format",_3)[_1.getDay()]; |
24 |
case "A": |
25 |
return dojo.date.locale.getNames("days","wide","format",_3)[_1.getDay()]; |
26 |
case "b": |
27 |
case "h": |
28 |
return dojo.date.locale.getNames("months","abbr","format",_3)[_1.getMonth()]; |
29 |
case "B": |
30 |
return dojo.date.locale.getNames("months","wide","format",_3)[_1.getMonth()]; |
31 |
case "c": |
32 |
return dojo.date.locale.format(_1,{formatLength:"full",locale:_3}); |
33 |
case "C": |
34 |
return _5(Math.floor(_1.getFullYear()/100)); |
35 |
case "d": |
36 |
return _5(_1.getDate());
|
37 |
case "D": |
38 |
return $("m")+"/"+$("d")+"/"+$("y"); |
39 |
case "e": |
40 |
if(_4==null){ |
41 |
_4=" ";
|
42 |
} |
43 |
return _5(_1.getDate());
|
44 |
case "f": |
45 |
if(_4==null){ |
46 |
_4=" ";
|
47 |
} |
48 |
return _5(_1.getMonth()+1); |
49 |
case "g": |
50 |
break;
|
51 |
case "G": |
52 |
dojo.unimplemented("unimplemented modifier 'G'");
|
53 |
break;
|
54 |
case "F": |
55 |
return $("Y")+"-"+$("m")+"-"+$("d"); |
56 |
case "H": |
57 |
return _5(_1.getHours());
|
58 |
case "I": |
59 |
return _5(_1.getHours()%12||12); |
60 |
case "j": |
61 |
return _5(dojo.date.locale._getDayOfYear(_1),3); |
62 |
case "k": |
63 |
if(_4==null){ |
64 |
_4=" ";
|
65 |
} |
66 |
return _5(_1.getHours());
|
67 |
case "l": |
68 |
if(_4==null){ |
69 |
_4=" ";
|
70 |
} |
71 |
return _5(_1.getHours()%12||12); |
72 |
case "m": |
73 |
return _5(_1.getMonth()+1); |
74 |
case "M": |
75 |
return _5(_1.getMinutes());
|
76 |
case "n": |
77 |
return "\n"; |
78 |
case "p": |
79 |
return _6["dayPeriods-format-wide-"+(_1.getHours()<12?"am":"pm")]; |
80 |
case "r": |
81 |
return $("I")+":"+$("M")+":"+$("S")+" "+$("p"); |
82 |
case "R": |
83 |
return $("H")+":"+$("M"); |
84 |
case "S": |
85 |
return _5(_1.getSeconds());
|
86 |
case "t": |
87 |
return "\t"; |
88 |
case "T": |
89 |
return $("H")+":"+$("M")+":"+$("S"); |
90 |
case "u": |
91 |
return String(_1.getDay()||7); |
92 |
case "U": |
93 |
return _5(dojo.date.locale._getWeekOfYear(_1));
|
94 |
case "V": |
95 |
return _5(dojox.date.posix.getIsoWeekOfYear(_1));
|
96 |
case "W": |
97 |
return _5(dojo.date.locale._getWeekOfYear(_1,1)); |
98 |
case "w": |
99 |
return String(_1.getDay());
|
100 |
case "x": |
101 |
return dojo.date.locale.format(_1,{selector:"date",formatLength:"full",locale:_3}); |
102 |
case "X": |
103 |
return dojo.date.locale.format(_1,{selector:"time",formatLength:"full",locale:_3}); |
104 |
case "y": |
105 |
return _5(_1.getFullYear()%100); |
106 |
case "Y": |
107 |
return String(_1.getFullYear());
|
108 |
case "z": |
109 |
var _8=_1.getTimezoneOffset();
|
110 |
return (_8>0?"-":"+")+_5(Math.floor(Math.abs(_8)/60))+":"+_5(Math.abs(_8)%60); |
111 |
case "Z": |
112 |
return dojo.date.getTimezoneName(_1);
|
113 |
case "%": |
114 |
return "%"; |
115 |
} |
116 |
}; |
117 |
var _9=""; |
118 |
var i=0; |
119 |
var _a=0; |
120 |
var _b=null; |
121 |
while((_a=_2.indexOf("%",i))!=-1){ |
122 |
_9+=_2.substring(i,_a++); |
123 |
switch(_2.charAt(_a++)){
|
124 |
case "_": |
125 |
_4=" ";
|
126 |
break;
|
127 |
case "-": |
128 |
_4="";
|
129 |
break;
|
130 |
case "0": |
131 |
_4="0";
|
132 |
break;
|
133 |
case "^": |
134 |
_b="upper";
|
135 |
break;
|
136 |
case "*": |
137 |
_b="lower";
|
138 |
break;
|
139 |
case "#": |
140 |
_b="swap";
|
141 |
break;
|
142 |
default:
|
143 |
_4=null;
|
144 |
_a--; |
145 |
break;
|
146 |
} |
147 |
var _c=$(_2.charAt(_a++)); |
148 |
switch(_b){
|
149 |
case "upper": |
150 |
_c=_c.toUpperCase(); |
151 |
break;
|
152 |
case "lower": |
153 |
_c=_c.toLowerCase(); |
154 |
break;
|
155 |
case "swap": |
156 |
var _d=_c.toLowerCase();
|
157 |
var _e=""; |
158 |
var ch=""; |
159 |
for(var j=0;j<_c.length;j++){ |
160 |
ch=_c.charAt(j); |
161 |
_e+=(ch==_d.charAt(j))?ch.toUpperCase():ch.toLowerCase(); |
162 |
} |
163 |
_c=_e; |
164 |
break;
|
165 |
default:
|
166 |
break;
|
167 |
} |
168 |
_b=null;
|
169 |
_9+=_c; |
170 |
i=_a; |
171 |
} |
172 |
_9+=_2.substring(i); |
173 |
return _9;
|
174 |
}; |
175 |
dojox.date.posix.getStartOfWeek=function(_f,_10){ |
176 |
if(isNaN(_10)){
|
177 |
_10=dojo.cldr.supplemental.getFirstDayOfWeek?dojo.cldr.supplemental.getFirstDayOfWeek():0;
|
178 |
} |
179 |
var _11=_10;
|
180 |
if(_f.getDay()>=_10){
|
181 |
_11-=_f.getDay(); |
182 |
}else{
|
183 |
_11-=(7-_f.getDay());
|
184 |
} |
185 |
var _12=new Date(_f); |
186 |
_12.setHours(0,0,0,0); |
187 |
return dojo.date.add(_12,"day",_11); |
188 |
}; |
189 |
dojox.date.posix.setIsoWeekOfYear=function(_13,_14){ |
190 |
if(!_14){
|
191 |
return _13;
|
192 |
} |
193 |
var _15=dojox.date.posix.getIsoWeekOfYear(_13);
|
194 |
var _16=_14-_15;
|
195 |
if(_14<0){ |
196 |
var _17=dojox.date.posix.getIsoWeeksInYear(_13);
|
197 |
_16=(_17+_14+1)-_15;
|
198 |
} |
199 |
return dojo.date.add(_13,"week",_16); |
200 |
}; |
201 |
dojox.date.posix.getIsoWeekOfYear=function(_18){ |
202 |
var _19=dojox.date.posix.getStartOfWeek(_18,1); |
203 |
var _1a=new Date(_18.getFullYear(),0,4); |
204 |
_1a=dojox.date.posix.getStartOfWeek(_1a,1);
|
205 |
var _1b=_19.getTime()-_1a.getTime();
|
206 |
if(_1b<0){ |
207 |
return dojox.date.posix.getIsoWeeksInYear(_19);
|
208 |
} |
209 |
return Math.ceil(_1b/604800000)+1; |
210 |
}; |
211 |
dojox.date.posix.getIsoWeeksInYear=function(_1c){ |
212 |
function p(y){ |
213 |
return y+Math.floor(y/4)-Math.floor(y/100)+Math.floor(y/400); |
214 |
}; |
215 |
var y=_1c.getFullYear();
|
216 |
return (p(y)%7==4||p(y-1)%7==3)?53:52; |
217 |
}; |
218 |
} |