|
1 require("../env"); |
|
2 require("../../d3"); |
|
3 require("../../d3.time"); |
|
4 |
|
5 var vows = require("vows"), |
|
6 assert = require("assert"); |
|
7 |
|
8 var suite = vows.describe("d3.time.format"); |
|
9 |
|
10 suite.addBatch({ |
|
11 "format": { |
|
12 topic: function() { |
|
13 return d3.time.format; |
|
14 }, |
|
15 "formats abbreviated weekday": function(format) { |
|
16 var f = format("%a"); |
|
17 assert.equal(f(local(1990, 0, 1)), "Mon"); |
|
18 assert.equal(f(local(1990, 0, 2)), "Tue"); |
|
19 assert.equal(f(local(1990, 0, 3)), "Wed"); |
|
20 assert.equal(f(local(1990, 0, 4)), "Thu"); |
|
21 assert.equal(f(local(1990, 0, 5)), "Fri"); |
|
22 assert.equal(f(local(1990, 0, 6)), "Sat"); |
|
23 assert.equal(f(local(1990, 0, 7)), "Sun"); |
|
24 }, |
|
25 "formats weekday": function(format) { |
|
26 var f = format("%A"); |
|
27 assert.equal(f(local(1990, 0, 1)), "Monday"); |
|
28 assert.equal(f(local(1990, 0, 2)), "Tuesday"); |
|
29 assert.equal(f(local(1990, 0, 3)), "Wednesday"); |
|
30 assert.equal(f(local(1990, 0, 4)), "Thursday"); |
|
31 assert.equal(f(local(1990, 0, 5)), "Friday"); |
|
32 assert.equal(f(local(1990, 0, 6)), "Saturday"); |
|
33 assert.equal(f(local(1990, 0, 7)), "Sunday"); |
|
34 }, |
|
35 "formats abbreviated month": function(format) { |
|
36 var f = format("%b"); |
|
37 assert.equal(f(local(1990, 0, 1)), "Jan"); |
|
38 assert.equal(f(local(1990, 1, 1)), "Feb"); |
|
39 assert.equal(f(local(1990, 2, 1)), "Mar"); |
|
40 assert.equal(f(local(1990, 3, 1)), "Apr"); |
|
41 assert.equal(f(local(1990, 4, 1)), "May"); |
|
42 assert.equal(f(local(1990, 5, 1)), "Jun"); |
|
43 assert.equal(f(local(1990, 6, 1)), "Jul"); |
|
44 assert.equal(f(local(1990, 7, 1)), "Aug"); |
|
45 assert.equal(f(local(1990, 8, 1)), "Sep"); |
|
46 assert.equal(f(local(1990, 9, 1)), "Oct"); |
|
47 assert.equal(f(local(1990, 10, 1)), "Nov"); |
|
48 assert.equal(f(local(1990, 11, 1)), "Dec"); |
|
49 }, |
|
50 "formats locale date and time": function(format) { |
|
51 var f = format("%c"); |
|
52 assert.equal(f(local(1990, 0, 1)), "Mon Jan 1 00:00:00 1990"); |
|
53 }, |
|
54 "formats zero-padded date": function(format) { |
|
55 var f = format("%d"); |
|
56 assert.equal(f(local(1990, 0, 1)), "01"); |
|
57 }, |
|
58 "formats space-padded date": function(format) { |
|
59 var f = format("%e"); |
|
60 assert.equal(f(local(1990, 0, 1)), " 1"); |
|
61 }, |
|
62 "formats zero-padded hour (24)": function(format) { |
|
63 var f = format("%H"); |
|
64 assert.equal(f(local(1990, 0, 1, 0)), "00"); |
|
65 assert.equal(f(local(1990, 0, 1, 13)), "13"); |
|
66 }, |
|
67 "formats zero-padded hour (12)": function(format) { |
|
68 var f = format("%I"); |
|
69 assert.equal(f(local(1990, 0, 1, 0)), "12"); |
|
70 assert.equal(f(local(1990, 0, 1, 13)), "01"); |
|
71 }, |
|
72 "formats zero-padded day of year": function(format) { |
|
73 var f = format("%j"); |
|
74 assert.equal(f(local(1990, 0, 1)), "001"); |
|
75 assert.equal(f(local(1990, 5, 1)), "152"); |
|
76 assert.equal(f(local(2010, 2, 13)), "072"); |
|
77 assert.equal(f(local(2010, 2, 14)), "073"); // DST begins |
|
78 assert.equal(f(local(2010, 2, 15)), "074"); |
|
79 assert.equal(f(local(2010, 10, 6)), "310"); |
|
80 assert.equal(f(local(2010, 10, 7)), "311"); // DST ends |
|
81 assert.equal(f(local(2010, 10, 8)), "312"); |
|
82 }, |
|
83 "formats zero-padded month": function(format) { |
|
84 var f = format("%m"); |
|
85 assert.equal(f(local(1990, 0, 1)), "01"); |
|
86 assert.equal(f(local(1990, 9, 1)), "10"); |
|
87 }, |
|
88 "formats zero-padded minute": function(format) { |
|
89 var f = format("%M"); |
|
90 assert.equal(f(local(1990, 0, 1, 0, 0)), "00"); |
|
91 assert.equal(f(local(1990, 0, 1, 0, 32)), "32"); |
|
92 }, |
|
93 "formats AM or PM": function(format) { |
|
94 var f = format("%p"); |
|
95 assert.equal(f(local(1990, 0, 1, 0)), "AM"); |
|
96 assert.equal(f(local(1990, 0, 1, 13)), "PM"); |
|
97 }, |
|
98 "formats zero-padded second": function(format) { |
|
99 var f = format("%S"); |
|
100 assert.equal(f(local(1990, 0, 1, 0, 0, 0)), "00"); |
|
101 assert.equal(f(local(1990, 0, 1, 0, 0, 32)), "32"); |
|
102 }, |
|
103 "formats zero-padded millisecond": function(format) { |
|
104 var f = format("%L"); |
|
105 assert.equal(f(local(1990, 0, 1, 0, 0, 0, 0)), "000"); |
|
106 assert.equal(f(local(1990, 0, 1, 0, 0, 0, 432)), "432"); |
|
107 }, |
|
108 "formats zero-padded week number": function(format) { |
|
109 var f = format("%U"); |
|
110 assert.equal(f(local(1990, 0, 1)), "00"); |
|
111 assert.equal(f(local(1990, 5, 1)), "21"); |
|
112 assert.equal(f(local(2010, 2, 13, 23)), "10"); |
|
113 assert.equal(f(local(2010, 2, 14, 00)), "11"); // DST begins |
|
114 assert.equal(f(local(2010, 2, 15, 00)), "11"); |
|
115 assert.equal(f(local(2010, 10, 6, 23)), "44"); |
|
116 assert.equal(f(local(2010, 10, 7, 00)), "45"); // DST ends |
|
117 assert.equal(f(local(2010, 10, 8, 00)), "45"); |
|
118 }, |
|
119 "formats locale date": function(format) { |
|
120 var f = format("%x"); |
|
121 assert.equal(f(local(1990, 0, 1)), "01/01/90"); |
|
122 assert.equal(f(local(2010, 5, 1)), "06/01/10"); |
|
123 }, |
|
124 "formats locale time": function(format) { |
|
125 var f = format("%X"); |
|
126 assert.equal(f(local(1990, 0, 1)), "00:00:00"); |
|
127 assert.equal(f(local(1990, 0, 1, 13, 34, 59)), "13:34:59"); |
|
128 }, |
|
129 "formats zero-padded two-digit year": function(format) { |
|
130 var f = format("%y"); |
|
131 assert.equal(f(local(1990, 0, 1)), "90"); |
|
132 assert.equal(f(local(2002, 0, 1)), "02"); |
|
133 }, |
|
134 "formats zero-padded four-digit year": function(format) { |
|
135 var f = format("%Y"); |
|
136 assert.equal(f(local(123, 0, 1)), "0123"); |
|
137 assert.equal(f(local(1990, 0, 1)), "1990"); |
|
138 assert.equal(f(local(2002, 0, 1)), "2002"); |
|
139 assert.equal(f(local(10002, 0, 1)), "0002"); |
|
140 }, |
|
141 "formats time zone": function(format) { |
|
142 var f = format("%Z"); |
|
143 assert.equal(f(local(1990, 0, 1)), "-0800"); |
|
144 }, |
|
145 "formats literal percent sign": function(format) { |
|
146 var f = format("%%"); |
|
147 assert.equal(f(local(1990, 0, 1)), "%"); |
|
148 }, |
|
149 "UTC": { |
|
150 topic: function(format) { |
|
151 return format.utc; |
|
152 }, |
|
153 "formats abbreviated weekday": function(format) { |
|
154 var f = format("%a"); |
|
155 assert.equal(f(utc(1990, 0, 1)), "Mon"); |
|
156 assert.equal(f(utc(1990, 0, 2)), "Tue"); |
|
157 assert.equal(f(utc(1990, 0, 3)), "Wed"); |
|
158 assert.equal(f(utc(1990, 0, 4)), "Thu"); |
|
159 assert.equal(f(utc(1990, 0, 5)), "Fri"); |
|
160 assert.equal(f(utc(1990, 0, 6)), "Sat"); |
|
161 assert.equal(f(utc(1990, 0, 7)), "Sun"); |
|
162 }, |
|
163 "formats weekday": function(format) { |
|
164 var f = format("%A"); |
|
165 assert.equal(f(utc(1990, 0, 1)), "Monday"); |
|
166 assert.equal(f(utc(1990, 0, 2)), "Tuesday"); |
|
167 assert.equal(f(utc(1990, 0, 3)), "Wednesday"); |
|
168 assert.equal(f(utc(1990, 0, 4)), "Thursday"); |
|
169 assert.equal(f(utc(1990, 0, 5)), "Friday"); |
|
170 assert.equal(f(utc(1990, 0, 6)), "Saturday"); |
|
171 assert.equal(f(utc(1990, 0, 7)), "Sunday"); |
|
172 }, |
|
173 "formats abbreviated month": function(format) { |
|
174 var f = format("%b"); |
|
175 assert.equal(f(utc(1990, 0, 1)), "Jan"); |
|
176 assert.equal(f(utc(1990, 1, 1)), "Feb"); |
|
177 assert.equal(f(utc(1990, 2, 1)), "Mar"); |
|
178 assert.equal(f(utc(1990, 3, 1)), "Apr"); |
|
179 assert.equal(f(utc(1990, 4, 1)), "May"); |
|
180 assert.equal(f(utc(1990, 5, 1)), "Jun"); |
|
181 assert.equal(f(utc(1990, 6, 1)), "Jul"); |
|
182 assert.equal(f(utc(1990, 7, 1)), "Aug"); |
|
183 assert.equal(f(utc(1990, 8, 1)), "Sep"); |
|
184 assert.equal(f(utc(1990, 9, 1)), "Oct"); |
|
185 assert.equal(f(utc(1990, 10, 1)), "Nov"); |
|
186 assert.equal(f(utc(1990, 11, 1)), "Dec"); |
|
187 }, |
|
188 "formats locale date and time": function(format) { |
|
189 var f = format("%c"); |
|
190 assert.equal(f(utc(1990, 0, 1)), "Mon Jan 1 00:00:00 1990"); |
|
191 }, |
|
192 "formats zero-padded date": function(format) { |
|
193 var f = format("%d"); |
|
194 assert.equal(f(utc(1990, 0, 1)), "01"); |
|
195 }, |
|
196 "formats space-padded date": function(format) { |
|
197 var f = format("%e"); |
|
198 assert.equal(f(utc(1990, 0, 1)), " 1"); |
|
199 }, |
|
200 "formats zero-padded hour (24)": function(format) { |
|
201 var f = format("%H"); |
|
202 assert.equal(f(utc(1990, 0, 1, 0)), "00"); |
|
203 assert.equal(f(utc(1990, 0, 1, 13)), "13"); |
|
204 }, |
|
205 "formats zero-padded hour (12)": function(format) { |
|
206 var f = format("%I"); |
|
207 assert.equal(f(utc(1990, 0, 1, 0)), "12"); |
|
208 assert.equal(f(utc(1990, 0, 1, 13)), "01"); |
|
209 }, |
|
210 "formats zero-padded day of year": function(format) { |
|
211 var f = format("%j"); |
|
212 assert.equal(f(utc(1990, 0, 1)), "001"); |
|
213 assert.equal(f(utc(1990, 5, 1)), "152"); |
|
214 assert.equal(f(utc(2010, 2, 13, 23)), "072"); |
|
215 assert.equal(f(utc(2010, 2, 14, 00)), "073"); // DST begins |
|
216 assert.equal(f(utc(2010, 2, 15, 00)), "074"); |
|
217 assert.equal(f(utc(2010, 10, 6, 23)), "310"); |
|
218 assert.equal(f(utc(2010, 10, 7, 00)), "311"); // DST ends |
|
219 assert.equal(f(utc(2010, 10, 8, 00)), "312"); |
|
220 }, |
|
221 "formats zero-padded month": function(format) { |
|
222 var f = format("%m"); |
|
223 assert.equal(f(utc(1990, 0, 1)), "01"); |
|
224 assert.equal(f(utc(1990, 9, 1)), "10"); |
|
225 }, |
|
226 "formats zero-padded minute": function(format) { |
|
227 var f = format("%M"); |
|
228 assert.equal(f(utc(1990, 0, 1, 0, 0)), "00"); |
|
229 assert.equal(f(utc(1990, 0, 1, 0, 32)), "32"); |
|
230 }, |
|
231 "formats AM or PM": function(format) { |
|
232 var f = format("%p"); |
|
233 assert.equal(f(utc(1990, 0, 1, 0)), "AM"); |
|
234 assert.equal(f(utc(1990, 0, 1, 13)), "PM"); |
|
235 }, |
|
236 "formats zero-padded second": function(format) { |
|
237 var f = format("%S"); |
|
238 assert.equal(f(utc(1990, 0, 1, 0, 0, 0)), "00"); |
|
239 assert.equal(f(utc(1990, 0, 1, 0, 0, 32)), "32"); |
|
240 }, |
|
241 "formats zero-padded millisecond": function(format) { |
|
242 var f = format("%L"); |
|
243 assert.equal(f(utc(1990, 0, 1, 0, 0, 0, 0)), "000"); |
|
244 assert.equal(f(utc(1990, 0, 1, 0, 0, 0, 432)), "432"); |
|
245 }, |
|
246 "formats zero-padded week number": function(format) { |
|
247 var f = format("%U"); |
|
248 assert.equal(f(utc(1990, 0, 1)), "00"); |
|
249 assert.equal(f(utc(1990, 5, 1)), "21"); |
|
250 assert.equal(f(utc(2010, 2, 13, 23)), "10"); |
|
251 assert.equal(f(utc(2010, 2, 14, 00)), "11"); // DST begins |
|
252 assert.equal(f(utc(2010, 2, 15, 00)), "11"); |
|
253 assert.equal(f(utc(2010, 10, 6, 23)), "44"); |
|
254 assert.equal(f(utc(2010, 10, 7, 00)), "45"); // DST ends |
|
255 assert.equal(f(utc(2010, 10, 8, 00)), "45"); |
|
256 }, |
|
257 "formats locale date": function(format) { |
|
258 var f = format("%x"); |
|
259 assert.equal(f(utc(1990, 0, 1)), "01/01/90"); |
|
260 assert.equal(f(utc(2010, 5, 1)), "06/01/10"); |
|
261 }, |
|
262 "formats locale time": function(format) { |
|
263 var f = format("%X"); |
|
264 assert.equal(f(utc(1990, 0, 1)), "00:00:00"); |
|
265 assert.equal(f(utc(1990, 0, 1, 13, 34, 59)), "13:34:59"); |
|
266 }, |
|
267 "formats zero-padded two-digit year": function(format) { |
|
268 var f = format("%y"); |
|
269 assert.equal(f(utc(1990, 0, 1)), "90"); |
|
270 assert.equal(f(utc(2002, 0, 1)), "02"); |
|
271 }, |
|
272 "formats zero-padded four-digit year": function(format) { |
|
273 var f = format("%Y"); |
|
274 assert.equal(f(utc(123, 0, 1)), "0123"); |
|
275 assert.equal(f(utc(1990, 0, 1)), "1990"); |
|
276 assert.equal(f(utc(2002, 0, 1)), "2002"); |
|
277 assert.equal(f(utc(10002, 0, 1)), "0002"); |
|
278 }, |
|
279 "formats time zone": function(format) { |
|
280 var f = format("%Z"); |
|
281 assert.equal(f(utc(1990, 0, 1)), "+0000"); |
|
282 }, |
|
283 "formats literal percent sign": function(format) { |
|
284 var f = format("%%"); |
|
285 assert.equal(f(utc(1990, 0, 1)), "%"); |
|
286 }, |
|
287 }, |
|
288 "ISO": { |
|
289 topic: function(format) { |
|
290 return format.iso; |
|
291 }, |
|
292 "toString is %Y-%m-%dT%H:%M:%S.%LZ": function(format) { |
|
293 assert.equal(format + "", "%Y-%m-%dT%H:%M:%S.%LZ"); |
|
294 }, |
|
295 "formats as ISO 8601": function(format) { |
|
296 assert.equal(format(utc(1990, 0, 1, 0, 0, 0)), "1990-01-01T00:00:00.000Z"); |
|
297 assert.equal(format(utc(2011, 11, 31, 23, 59, 59)), "2011-12-31T23:59:59.000Z"); |
|
298 } |
|
299 } |
|
300 }, |
|
301 "parse": { |
|
302 topic: function() { |
|
303 return d3.time.format; |
|
304 }, |
|
305 "parses abbreviated weekday and numeric date": function(format) { |
|
306 var p = format("%a %m/%d/%Y").parse; |
|
307 assert.deepEqual(p("Sun 01/01/1990"), local(1990, 0, 1)); |
|
308 assert.deepEqual(p("Wed 02/03/1991"), local(1991, 1, 3)); |
|
309 assert.isNull(p("XXX 03/10/2010")); |
|
310 }, |
|
311 "parses weekday and numeric date": function(format) { |
|
312 var p = format("%A %m/%d/%Y").parse; |
|
313 assert.deepEqual(p("Sunday 01/01/1990"), local(1990, 0, 1)); |
|
314 assert.deepEqual(p("Wednesday 02/03/1991"), local(1991, 1, 3)); |
|
315 assert.isNull(p("Caturday 03/10/2010")); |
|
316 }, |
|
317 "parses numeric date": function(format) { |
|
318 var p = format("%m/%d/%y").parse; |
|
319 assert.deepEqual(p("01/01/90"), local(2090, 0, 1)); |
|
320 assert.deepEqual(p("02/03/91"), local(2091, 1, 3)); |
|
321 assert.isNull(p("03/10/2010")); |
|
322 }, |
|
323 "parses locale date": function(format) { |
|
324 var p = format("%x").parse; |
|
325 assert.deepEqual(p("01/01/90"), local(2090, 0, 1)); |
|
326 assert.deepEqual(p("02/03/91"), local(2091, 1, 3)); |
|
327 assert.isNull(p("03/10/2010")); |
|
328 }, |
|
329 "parses abbreviated month, date and year": function(format) { |
|
330 var p = format("%b %d, %Y").parse; |
|
331 assert.deepEqual(p("jan 01, 1990"), local(1990, 0, 1)); |
|
332 assert.deepEqual(p("feb 2, 2010"), local(2010, 1, 2)); |
|
333 assert.isNull(p("jan. 1, 1990")); |
|
334 }, |
|
335 "parses month, date and year": function(format) { |
|
336 var p = format("%B %d, %Y").parse; |
|
337 assert.deepEqual(p("january 01, 1990"), local(1990, 0, 1)); |
|
338 assert.deepEqual(p("February 2, 2010"), local(2010, 1, 2)); |
|
339 assert.isNull(p("jan 1, 1990")); |
|
340 }, |
|
341 "parses locale date and time": function(format) { |
|
342 var p = format("%c").parse; |
|
343 assert.deepEqual(p("Mon Jan 1 00:00:00 1990"), local(1990, 0, 1)); |
|
344 assert.deepEqual(p("Sun Jan 1 00:00:00 1990"), local(1990, 0, 1)); |
|
345 assert.deepEqual(p("Mon Jan 01 00:00:00 1990"), local(1990, 0, 1)); |
|
346 assert.deepEqual(p("Mon Jan 1 00:00:00 1990"), local(1990, 0, 1)); |
|
347 assert.deepEqual(p("Mon Jan 1 0:0:0 1990"), local(1990, 0, 1)); |
|
348 }, |
|
349 "parses twenty-four hour, minute and second": function(format) { |
|
350 var p = format("%H:%M:%S").parse; |
|
351 assert.deepEqual(p("00:00:00"), local(1900, 0, 1, 0, 0, 0)); |
|
352 assert.deepEqual(p("11:59:59"), local(1900, 0, 1, 11, 59, 59)); |
|
353 assert.deepEqual(p("12:00:00"), local(1900, 0, 1, 12, 0, 0)); |
|
354 assert.deepEqual(p("12:00:01"), local(1900, 0, 1, 12, 0, 1)); |
|
355 assert.deepEqual(p("23:59:59"), local(1900, 0, 1, 23, 59, 59)); |
|
356 }, |
|
357 "parses locale time": function(format) { |
|
358 var p = format("%X").parse; |
|
359 assert.deepEqual(p("00:00:00"), local(1900, 0, 1, 0, 0, 0)); |
|
360 assert.deepEqual(p("11:59:59"), local(1900, 0, 1, 11, 59, 59)); |
|
361 assert.deepEqual(p("12:00:00"), local(1900, 0, 1, 12, 0, 0)); |
|
362 assert.deepEqual(p("12:00:01"), local(1900, 0, 1, 12, 0, 1)); |
|
363 assert.deepEqual(p("23:59:59"), local(1900, 0, 1, 23, 59, 59)); |
|
364 }, |
|
365 "parses twelve hour, minute and second": function(format) { |
|
366 var p = format("%I:%M:%S %p").parse; |
|
367 assert.deepEqual(p("12:00:00 am"), local(1900, 0, 1, 0, 0, 0)); |
|
368 assert.deepEqual(p("11:59:59 AM"), local(1900, 0, 1, 11, 59, 59)); |
|
369 assert.deepEqual(p("12:00:00 pm"), local(1900, 0, 1, 12, 0, 0)); |
|
370 assert.deepEqual(p("12:00:01 pm"), local(1900, 0, 1, 12, 0, 1)); |
|
371 assert.deepEqual(p("11:59:59 PM"), local(1900, 0, 1, 23, 59, 59)); |
|
372 }, |
|
373 "UTC": { |
|
374 topic: function(format) { |
|
375 return format.utc; |
|
376 }, |
|
377 "parses abbreviated weekday and numeric date": function(format) { |
|
378 var p = format("%a %m/%d/%Y").parse; |
|
379 assert.deepEqual(p("Sun 01/01/1990"), utc(1990, 0, 1)); |
|
380 assert.deepEqual(p("Wed 02/03/1991"), utc(1991, 1, 3)); |
|
381 assert.isNull(p("XXX 03/10/2010")); |
|
382 }, |
|
383 "parses weekday and numeric date": function(format) { |
|
384 var p = format("%A %m/%d/%Y").parse; |
|
385 assert.deepEqual(p("Sunday 01/01/1990"), utc(1990, 0, 1)); |
|
386 assert.deepEqual(p("Wednesday 02/03/1991"), utc(1991, 1, 3)); |
|
387 assert.isNull(p("Caturday 03/10/2010")); |
|
388 }, |
|
389 "parses numeric date": function(format) { |
|
390 var p = format("%m/%d/%y").parse; |
|
391 assert.deepEqual(p("01/01/90"), utc(2090, 0, 1)); |
|
392 assert.deepEqual(p("02/03/91"), utc(2091, 1, 3)); |
|
393 assert.isNull(p("03/10/2010")); |
|
394 }, |
|
395 "parses locale date": function(format) { |
|
396 var p = format("%x").parse; |
|
397 assert.deepEqual(p("01/01/90"), utc(2090, 0, 1)); |
|
398 assert.deepEqual(p("02/03/91"), utc(2091, 1, 3)); |
|
399 assert.isNull(p("03/10/2010")); |
|
400 }, |
|
401 "parses abbreviated month, date and year": function(format) { |
|
402 var p = format("%b %d, %Y").parse; |
|
403 assert.deepEqual(p("jan 01, 1990"), utc(1990, 0, 1)); |
|
404 assert.deepEqual(p("feb 2, 2010"), utc(2010, 1, 2)); |
|
405 assert.isNull(p("jan. 1, 1990")); |
|
406 }, |
|
407 "parses month, date and year": function(format) { |
|
408 var p = format("%B %d, %Y").parse; |
|
409 assert.deepEqual(p("january 01, 1990"), utc(1990, 0, 1)); |
|
410 assert.deepEqual(p("February 2, 2010"), utc(2010, 1, 2)); |
|
411 assert.isNull(p("jan 1, 1990")); |
|
412 }, |
|
413 "parses locale date and time": function(format) { |
|
414 var p = format("%c").parse; |
|
415 assert.deepEqual(p("Mon Jan 1 00:00:00 1990"), utc(1990, 0, 1)); |
|
416 assert.deepEqual(p("Sun Jan 1 00:00:00 1990"), utc(1990, 0, 1)); |
|
417 assert.deepEqual(p("Mon Jan 01 00:00:00 1990"), utc(1990, 0, 1)); |
|
418 assert.deepEqual(p("Mon Jan 1 00:00:00 1990"), utc(1990, 0, 1)); |
|
419 assert.deepEqual(p("Mon Jan 1 0:0:0 1990"), utc(1990, 0, 1)); |
|
420 }, |
|
421 "parses twenty-four hour, minute and second": function(format) { |
|
422 var p = format("%H:%M:%S").parse; |
|
423 assert.deepEqual(p("00:00:00"), utc(1900, 0, 1, 0, 0, 0)); |
|
424 assert.deepEqual(p("11:59:59"), utc(1900, 0, 1, 11, 59, 59)); |
|
425 assert.deepEqual(p("12:00:00"), utc(1900, 0, 1, 12, 0, 0)); |
|
426 assert.deepEqual(p("12:00:01"), utc(1900, 0, 1, 12, 0, 1)); |
|
427 assert.deepEqual(p("23:59:59"), utc(1900, 0, 1, 23, 59, 59)); |
|
428 }, |
|
429 "parses locale time": function(format) { |
|
430 var p = format("%X").parse; |
|
431 assert.deepEqual(p("00:00:00"), utc(1900, 0, 1, 0, 0, 0)); |
|
432 assert.deepEqual(p("11:59:59"), utc(1900, 0, 1, 11, 59, 59)); |
|
433 assert.deepEqual(p("12:00:00"), utc(1900, 0, 1, 12, 0, 0)); |
|
434 assert.deepEqual(p("12:00:01"), utc(1900, 0, 1, 12, 0, 1)); |
|
435 assert.deepEqual(p("23:59:59"), utc(1900, 0, 1, 23, 59, 59)); |
|
436 }, |
|
437 "parses twelve hour, minute and second": function(format) { |
|
438 var p = format("%I:%M:%S %p").parse; |
|
439 assert.deepEqual(p("12:00:00 am"), utc(1900, 0, 1, 0, 0, 0)); |
|
440 assert.deepEqual(p("11:59:59 AM"), utc(1900, 0, 1, 11, 59, 59)); |
|
441 assert.deepEqual(p("12:00:00 pm"), utc(1900, 0, 1, 12, 0, 0)); |
|
442 assert.deepEqual(p("12:00:01 pm"), utc(1900, 0, 1, 12, 0, 1)); |
|
443 assert.deepEqual(p("11:59:59 PM"), utc(1900, 0, 1, 23, 59, 59)); |
|
444 } |
|
445 }, |
|
446 "ISO": { |
|
447 topic: function(format) { |
|
448 return format.iso; |
|
449 }, |
|
450 "parses as ISO 8601": function(format) { |
|
451 var p = format.parse; |
|
452 assert.deepEqual(p("1990-01-01T00:00:00.000Z"), utc(1990, 0, 1, 0, 0, 0)); |
|
453 assert.deepEqual(p("2011-12-31T23:59:59.000Z"), utc(2011, 11, 31, 23, 59, 59)); |
|
454 } |
|
455 } |
|
456 } |
|
457 }); |
|
458 |
|
459 function local(year, month, day, hours, minutes, seconds, milliseconds) { |
|
460 return new Date(year, month, day, hours || 0, minutes || 0, seconds || 0, milliseconds || 0); |
|
461 } |
|
462 |
|
463 function utc(year, month, day, hours, minutes, seconds, milliseconds) { |
|
464 return new Date(Date.UTC(year, month, day, hours || 0, minutes || 0, seconds || 0, milliseconds || 0)); |
|
465 } |
|
466 |
|
467 suite.export(module); |