1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.lang3.time;
18
19 import static org.junit.jupiter.api.Assertions.assertEquals;
20 import static org.junit.jupiter.api.Assertions.assertNotEquals;
21
22 import java.text.DateFormat;
23 import java.text.SimpleDateFormat;
24 import java.util.Calendar;
25 import java.util.Date;
26 import java.util.Locale;
27
28 import org.apache.commons.lang3.AbstractLangTest;
29 import org.junit.jupiter.api.BeforeEach;
30 import org.junit.jupiter.api.Test;
31
32
33
34
35
36
37
38
39
40
41
42
43
44 public class DateUtilsRoundingTest extends AbstractLangTest {
45
46 DateFormat dateTimeParser;
47
48 Date januaryOneDate;
49 Date targetYearDate;
50
51 Date targetDateDate, targetDayOfMonthDate, targetAmDate, targetPmDate;
52 Date targetHourOfDayDate, targetHourDate;
53 Date targetMinuteDate;
54 Date targetSecondDate;
55 Date targetMilliSecondDate;
56
57 Calendar januaryOneCalendar;
58 @SuppressWarnings("deprecation")
59 FastDateFormat fdf = DateFormatUtils.ISO_DATETIME_FORMAT;
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74 protected void baseRoundTest(final Date roundedUpDate, final Date roundedDownDate, final Date lastRoundDownDate, final int calendarField) {
75 final Date firstRoundUpDate = DateUtils.addMilliseconds(lastRoundDownDate, 1);
76
77
78 assertEquals(roundedDownDate, DateUtils.round(roundedDownDate, calendarField));
79 assertEquals(roundedUpDate, DateUtils.round(roundedUpDate, calendarField));
80 assertEquals(roundedDownDate, DateUtils.round(lastRoundDownDate, calendarField));
81 assertEquals(roundedUpDate, DateUtils.round(firstRoundUpDate, calendarField));
82
83
84 final Calendar roundedUpCalendar;
85 final Calendar roundedDownCalendar;
86 final Calendar lastRoundDownCalendar;
87 final Calendar firstRoundUpCalendar;
88 roundedDownCalendar = Calendar.getInstance();
89 roundedUpCalendar = Calendar.getInstance();
90 lastRoundDownCalendar = Calendar.getInstance();
91 firstRoundUpCalendar = Calendar.getInstance();
92 roundedDownCalendar.setTime(roundedDownDate);
93 roundedUpCalendar.setTime(roundedUpDate);
94 lastRoundDownCalendar.setTime(lastRoundDownDate);
95 firstRoundUpCalendar.setTime(firstRoundUpDate);
96
97
98 assertEquals(roundedDownCalendar, DateUtils.round(roundedDownCalendar, calendarField));
99 assertEquals(roundedUpCalendar, DateUtils.round(roundedUpCalendar, calendarField));
100 assertEquals(roundedDownCalendar, DateUtils.round(lastRoundDownCalendar, calendarField));
101 assertEquals(roundedUpCalendar, DateUtils.round(firstRoundUpCalendar, calendarField));
102
103
104 assertEquals(roundedDownDate, DateUtils.round((Object) roundedDownDate, calendarField));
105 assertEquals(roundedUpDate, DateUtils.round((Object) roundedUpDate, calendarField));
106 assertEquals(roundedDownDate, DateUtils.round((Object) lastRoundDownDate, calendarField));
107 assertEquals(roundedUpDate, DateUtils.round((Object) firstRoundUpDate, calendarField));
108 assertEquals(roundedDownDate, DateUtils.round((Object) roundedDownCalendar, calendarField));
109 assertEquals(roundedUpDate, DateUtils.round((Object) roundedUpCalendar, calendarField));
110 assertEquals(roundedDownDate, DateUtils.round((Object) lastRoundDownDate, calendarField));
111 assertEquals(roundedUpDate, DateUtils.round((Object) firstRoundUpDate, calendarField));
112 }
113
114
115
116
117
118
119
120
121
122
123
124
125 protected void baseTruncateTest(final Date truncatedDate, final Date lastTruncateDate, final int calendarField) {
126 final Date nextTruncateDate = DateUtils.addMilliseconds(lastTruncateDate, 1);
127
128
129 assertEquals(truncatedDate, DateUtils.truncate(truncatedDate, calendarField), "Truncating "+ fdf.format(truncatedDate) +" as Date with CalendarField-value "+ calendarField +" must return itself");
130 assertEquals(truncatedDate, DateUtils.truncate(lastTruncateDate, calendarField));
131 assertNotEquals(truncatedDate, DateUtils.truncate(nextTruncateDate, calendarField), fdf.format(lastTruncateDate) + " is not an extreme when truncating as Date with CalendarField-value " + calendarField);
132
133
134 final Calendar truncatedCalendar;
135 final Calendar lastTruncateCalendar;
136 final Calendar nextTruncateCalendar;
137 truncatedCalendar = Calendar.getInstance();
138 lastTruncateCalendar = Calendar.getInstance();
139 nextTruncateCalendar = Calendar.getInstance();
140 truncatedCalendar.setTime(truncatedDate);
141 lastTruncateCalendar.setTime(lastTruncateDate);
142 nextTruncateCalendar.setTime(nextTruncateDate);
143
144
145 assertEquals(truncatedCalendar, DateUtils.truncate(truncatedCalendar, calendarField), "Truncating "+ fdf.format(truncatedCalendar) +" as Calendar with CalendarField-value "+ calendarField +" must return itself");
146 assertEquals(truncatedCalendar, DateUtils.truncate(lastTruncateCalendar, calendarField));
147 assertNotEquals(truncatedCalendar, DateUtils.truncate(nextTruncateCalendar, calendarField), fdf.format(lastTruncateCalendar) + " is not an extreme when truncating as Calendar with CalendarField-value " + calendarField);
148
149
150 assertEquals(truncatedDate, DateUtils.truncate((Object) truncatedDate, calendarField), "Truncating "+ fdf.format(truncatedDate) +" as Date cast to Object with CalendarField-value "+ calendarField +" must return itself as Date");
151 assertEquals(truncatedDate, DateUtils.truncate((Object) lastTruncateDate, calendarField));
152 assertNotEquals(truncatedDate, DateUtils.truncate((Object) nextTruncateDate, calendarField), fdf.format(lastTruncateDate) + " is not an extreme when truncating as Date cast to Object with CalendarField-value " + calendarField);
153 assertEquals(truncatedDate, DateUtils.truncate((Object) truncatedCalendar, calendarField), "Truncating "+ fdf.format(truncatedCalendar) +" as Calendar cast to Object with CalendarField-value "+ calendarField +" must return itself as Date");
154 assertEquals(truncatedDate, DateUtils.truncate((Object) lastTruncateCalendar, calendarField));
155 assertNotEquals(truncatedDate, DateUtils.truncate((Object) nextTruncateCalendar, calendarField), fdf.format(lastTruncateCalendar) + " is not an extreme when truncating as Calendar cast to Object with CalendarField-value " + calendarField);
156 }
157
158
159
160
161
162
163
164
165
166
167
168 protected void roundToJanuaryFirst(final Date minDate, final Date maxDate, final int calendarField) {
169 assertEquals(januaryOneDate, DateUtils.round(januaryOneDate, calendarField), "Rounding "+ fdf.format(januaryOneDate) +" as Date with CalendarField-value "+ calendarField +" must return itself");
170 assertEquals(januaryOneDate, DateUtils.round(minDate, calendarField));
171 assertEquals(januaryOneDate, DateUtils.round(maxDate, calendarField));
172
173 final Calendar minCalendar = Calendar.getInstance();
174 minCalendar.setTime(minDate);
175 final Calendar maxCalendar = Calendar.getInstance();
176 maxCalendar.setTime(maxDate);
177 assertEquals(januaryOneCalendar, DateUtils.round(januaryOneCalendar, calendarField), "Rounding "+ fdf.format(januaryOneCalendar) +" as Date with CalendarField-value "+ calendarField +" must return itself");
178 assertEquals(januaryOneCalendar, DateUtils.round(minCalendar, calendarField));
179 assertEquals(januaryOneCalendar, DateUtils.round(maxCalendar, calendarField));
180
181 final Date toPrevRoundDate = DateUtils.addMilliseconds(minDate, -1);
182 final Date toNextRoundDate = DateUtils.addMilliseconds(maxDate, 1);
183 assertNotEquals(januaryOneDate, DateUtils.round(toPrevRoundDate, calendarField), fdf.format(minDate) + " is not an lower-extreme when rounding as Date with CalendarField-value " + calendarField);
184 assertNotEquals(januaryOneDate, DateUtils.round(toNextRoundDate, calendarField), fdf.format(maxDate) + " is not an upper-extreme when rounding as Date with CalendarField-value " + calendarField);
185
186 final Calendar toPrevRoundCalendar = Calendar.getInstance();
187 toPrevRoundCalendar.setTime(toPrevRoundDate);
188 final Calendar toNextRoundCalendar = Calendar.getInstance();
189 toNextRoundCalendar.setTime(toNextRoundDate);
190 assertNotEquals(januaryOneDate, DateUtils.round(toPrevRoundDate, calendarField), fdf.format(minCalendar) + " is not an lower-extreme when rounding as Date with CalendarField-value " + calendarField);
191 assertNotEquals(januaryOneDate, DateUtils.round(toNextRoundDate, calendarField), fdf.format(maxCalendar) + " is not an upper-extreme when rounding as Date with CalendarField-value " + calendarField);
192 }
193
194 @BeforeEach
195 public void setUp() throws Exception {
196
197 dateTimeParser = new SimpleDateFormat("MMM dd, yyyy H:mm:ss.SSS", Locale.ENGLISH);
198
199 targetYearDate = dateTimeParser.parse("January 1, 2007 0:00:00.000");
200 targetDateDate = targetDayOfMonthDate = dateTimeParser.parse("June 1, 2008 0:00:00.000");
201 targetAmDate = dateTimeParser.parse("June 1, 2008 0:00:00.000");
202 targetPmDate = dateTimeParser.parse("June 1, 2008 12:00:00.000");
203 targetHourDate = dateTimeParser.parse("June 1, 2008 8:00:00.000");
204 targetHourOfDayDate = dateTimeParser.parse("June 1, 2008 8:00:00.000");
205 targetMinuteDate = dateTimeParser.parse("June 1, 2008 8:15:00.000");
206 targetSecondDate = dateTimeParser.parse("June 1, 2008 8:15:14.000");
207 targetMilliSecondDate = dateTimeParser.parse("June 1, 2008 8:15:14.231");
208
209 januaryOneDate = dateTimeParser.parse("January 1, 2008 0:00:00.000");
210 januaryOneCalendar = Calendar.getInstance();
211 januaryOneCalendar.setTime(januaryOneDate);
212 }
213
214
215
216
217
218
219
220
221
222 @Test
223 public void testRoundAmPm() throws Exception {
224 final int calendarField = Calendar.AM_PM;
225 Date roundedUpDate, roundedDownDate, lastRoundedDownDate;
226 final Date minDate;
227 final Date maxDate;
228
229
230 roundedUpDate = dateTimeParser.parse("June 1, 2008 12:00:00.000");
231 roundedDownDate = targetAmDate;
232 lastRoundedDownDate = dateTimeParser.parse("June 1, 2008 5:59:59.999");
233 baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
234
235
236 roundedUpDate = dateTimeParser.parse("June 2, 2008 0:00:00.000");
237 roundedDownDate = targetPmDate;
238 lastRoundedDownDate = dateTimeParser.parse("June 1, 2008 17:59:59.999");
239 baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
240
241
242 minDate = dateTimeParser.parse("December 31, 2007 18:00:00.000");
243 maxDate = dateTimeParser.parse("January 1, 2008 5:59:59.999");
244 roundToJanuaryFirst(minDate, maxDate, calendarField);
245 }
246
247
248
249
250
251
252
253
254
255 @Test
256 public void testRoundDate() throws Exception {
257 final int calendarField = Calendar.DATE;
258 final Date roundedUpDate;
259 final Date roundedDownDate;
260 final Date lastRoundedDownDate;
261 final Date minDate;
262 final Date maxDate;
263
264 roundedUpDate = dateTimeParser.parse("June 2, 2008 0:00:00.000");
265 roundedDownDate = targetDateDate;
266 lastRoundedDownDate = dateTimeParser.parse("June 1, 2008 11:59:59.999");
267 baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
268
269
270 minDate = dateTimeParser.parse("December 31, 2007 12:00:00.000");
271 maxDate = dateTimeParser.parse("January 1, 2008 11:59:59.999");
272 roundToJanuaryFirst(minDate, maxDate, calendarField);
273 }
274
275
276
277
278
279
280
281
282
283 @Test
284 public void testRoundDayOfMonth() throws Exception {
285 final int calendarField = Calendar.DAY_OF_MONTH;
286 final Date roundedUpDate;
287 final Date roundedDownDate;
288 final Date lastRoundedDownDate;
289 final Date minDate;
290 final Date maxDate;
291
292 roundedUpDate = dateTimeParser.parse("June 2, 2008 0:00:00.000");
293 roundedDownDate = targetDayOfMonthDate;
294 lastRoundedDownDate = dateTimeParser.parse("June 1, 2008 11:59:59.999");
295 baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
296
297
298 minDate = dateTimeParser.parse("December 31, 2007 12:00:00.000");
299 maxDate = dateTimeParser.parse("January 1, 2008 11:59:59.999");
300 roundToJanuaryFirst(minDate, maxDate, calendarField);
301 }
302
303
304
305
306
307
308
309
310
311 @Test
312 public void testRoundHour() throws Exception {
313 final int calendarField = Calendar.HOUR;
314 final Date roundedUpDate;
315 final Date roundedDownDate;
316 final Date lastRoundedDownDate;
317 final Date minDate;
318 final Date maxDate;
319
320 roundedUpDate = dateTimeParser.parse("June 1, 2008 9:00:00.000");
321 roundedDownDate = targetHourDate;
322 lastRoundedDownDate = dateTimeParser.parse("June 1, 2008 8:29:59.999");
323 baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
324
325
326 minDate = dateTimeParser.parse("December 31, 2007 23:30:00.000");
327 maxDate = dateTimeParser.parse("January 1, 2008 0:29:59.999");
328 roundToJanuaryFirst(minDate, maxDate, calendarField);
329 }
330
331
332
333
334
335
336
337
338
339 @Test
340 public void testRoundHourOfDay() throws Exception {
341 final int calendarField = Calendar.HOUR_OF_DAY;
342 final Date roundedUpDate;
343 final Date roundedDownDate;
344 final Date lastRoundedDownDate;
345 final Date minDate;
346 final Date maxDate;
347
348 roundedUpDate = dateTimeParser.parse("June 1, 2008 9:00:00.000");
349 roundedDownDate = targetHourOfDayDate;
350 lastRoundedDownDate = dateTimeParser.parse("June 1, 2008 8:29:59.999");
351 baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
352
353
354 minDate = dateTimeParser.parse("December 31, 2007 23:30:00.000");
355 maxDate = dateTimeParser.parse("January 1, 2008 0:29:59.999");
356 roundToJanuaryFirst(minDate, maxDate, calendarField);
357 }
358
359
360
361
362
363
364
365
366
367 @Test
368 public void testRoundMilliSecond() throws Exception {
369 final int calendarField = Calendar.MILLISECOND;
370 final Date roundedUpDate;
371 final Date roundedDownDate;
372 final Date lastRoundedDownDate;
373 final Date minDate;
374 final Date maxDate;
375
376 roundedDownDate = lastRoundedDownDate = targetMilliSecondDate;
377 roundedUpDate = dateTimeParser.parse("June 1, 2008 8:15:14.232");
378 baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
379
380
381 minDate = maxDate = januaryOneDate;
382 roundToJanuaryFirst(minDate, maxDate, calendarField);
383 }
384
385
386
387
388
389
390
391
392
393 @Test
394 public void testRoundMinute() throws Exception {
395 final int calendarField = Calendar.MINUTE;
396 final Date roundedUpDate;
397 final Date roundedDownDate;
398 final Date lastRoundedDownDate;
399 final Date minDate;
400 final Date maxDate;
401
402 roundedUpDate = dateTimeParser.parse("June 1, 2008 8:16:00.000");
403 roundedDownDate = targetMinuteDate;
404 lastRoundedDownDate = dateTimeParser.parse("June 1, 2008 8:15:29.999");
405 baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
406
407
408 minDate = dateTimeParser.parse("December 31, 2007 23:59:30.000");
409 maxDate = dateTimeParser.parse("January 1, 2008 0:00:29.999");
410 roundToJanuaryFirst(minDate, maxDate, calendarField);
411 }
412
413
414
415
416
417
418
419
420
421 @Test
422 public void testRoundMonth() throws Exception {
423 final int calendarField = Calendar.MONTH;
424 Date roundedUpDate, roundedDownDate, lastRoundedDownDate;
425 final Date minDate;
426 final Date maxDate;
427
428
429 roundedUpDate = dateTimeParser.parse("March 1, 2007 0:00:00.000");
430 roundedDownDate = dateTimeParser.parse("February 1, 2007 0:00:00.000");
431 lastRoundedDownDate = dateTimeParser.parse("February 14, 2007 23:59:59.999");
432 baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
433
434
435 roundedUpDate = dateTimeParser.parse("March 1, 2008 0:00:00.000");
436 roundedDownDate = dateTimeParser.parse("February 1, 2008 0:00:00.000");
437 lastRoundedDownDate = dateTimeParser.parse("February 15, 2008 23:59:59.999");
438 baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
439
440
441 roundedUpDate = dateTimeParser.parse("May 1, 2008 0:00:00.000");
442 roundedDownDate = dateTimeParser.parse("April 1, 2008 0:00:00.000");
443 lastRoundedDownDate = dateTimeParser.parse("April 15, 2008 23:59:59.999");
444 baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
445
446
447 roundedUpDate = dateTimeParser.parse("June 1, 2008 0:00:00.000");
448 roundedDownDate = dateTimeParser.parse("May 1, 2008 0:00:00.000");
449 lastRoundedDownDate = dateTimeParser.parse("May 16, 2008 23:59:59.999");
450 baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
451
452
453 minDate = dateTimeParser.parse("December 17, 2007 00:00:00.000");
454 maxDate = dateTimeParser.parse("January 16, 2008 23:59:59.999");
455 roundToJanuaryFirst(minDate, maxDate, calendarField);
456 }
457
458
459
460
461
462
463
464
465
466 @Test
467 public void testRoundSecond() throws Exception {
468 final int calendarField = Calendar.SECOND;
469 final Date roundedUpDate;
470 final Date roundedDownDate;
471 final Date lastRoundedDownDate;
472 final Date minDate;
473 final Date maxDate;
474
475 roundedUpDate = dateTimeParser.parse("June 1, 2008 8:15:15.000");
476 roundedDownDate = targetSecondDate;
477 lastRoundedDownDate = dateTimeParser.parse("June 1, 2008 8:15:14.499");
478 baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
479
480
481 minDate = dateTimeParser.parse("December 31, 2007 23:59:59.500");
482 maxDate = dateTimeParser.parse("January 1, 2008 0:00:00.499");
483 roundToJanuaryFirst(minDate, maxDate, calendarField);
484 }
485
486
487
488
489
490
491
492
493
494 @Test
495 public void testRoundSemiMonth() throws Exception {
496 final int calendarField = DateUtils.SEMI_MONTH;
497 Date roundedUpDate, roundedDownDate, lastRoundedDownDate;
498 final Date minDate;
499 final Date maxDate;
500
501
502 roundedUpDate = dateTimeParser.parse("February 16, 2007 0:00:00.000");
503 roundedDownDate = dateTimeParser.parse("February 1, 2007 0:00:00.000");
504 lastRoundedDownDate = dateTimeParser.parse("February 8, 2007 23:59:59.999");
505 baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
506
507
508 roundedUpDate = dateTimeParser.parse("March 1, 2007 0:00:00.000");
509 roundedDownDate = dateTimeParser.parse("February 16, 2007 0:00:00.000");
510 lastRoundedDownDate = dateTimeParser.parse("February 23, 2007 23:59:59.999");
511 baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
512
513
514 roundedUpDate = dateTimeParser.parse("February 16, 2008 0:00:00.000");
515 roundedDownDate = dateTimeParser.parse("February 1, 2008 0:00:00.000");
516 lastRoundedDownDate = dateTimeParser.parse("February 8, 2008 23:59:59.999");
517 baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
518
519
520 roundedUpDate = dateTimeParser.parse("March 1, 2008 0:00:00.000");
521 roundedDownDate = dateTimeParser.parse("February 16, 2008 0:00:00.000");
522 lastRoundedDownDate = dateTimeParser.parse("February 23, 2008 23:59:59.999");
523 baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
524
525
526 roundedUpDate = dateTimeParser.parse("April 16, 2008 0:00:00.000");
527 roundedDownDate = dateTimeParser.parse("April 1, 2008 0:00:00.000");
528 lastRoundedDownDate = dateTimeParser.parse("April 8, 2008 23:59:59.999");
529 baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
530
531
532 roundedUpDate = dateTimeParser.parse("May 1, 2008 0:00:00.000");
533 roundedDownDate = dateTimeParser.parse("April 16, 2008 0:00:00.000");
534 lastRoundedDownDate = dateTimeParser.parse("April 23, 2008 23:59:59.999");
535 baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
536
537
538 roundedUpDate = dateTimeParser.parse("May 16, 2008 0:00:00.000");
539 roundedDownDate = dateTimeParser.parse("May 1, 2008 0:00:00.000");
540 lastRoundedDownDate = dateTimeParser.parse("May 8, 2008 23:59:59.999");
541 baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
542
543
544 roundedUpDate = dateTimeParser.parse("June 1, 2008 0:00:00.000");
545 roundedDownDate = dateTimeParser.parse("May 16, 2008 0:00:00.000");
546 lastRoundedDownDate = dateTimeParser.parse("May 23, 2008 23:59:59.999");
547 baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
548
549
550 minDate = dateTimeParser.parse("December 24, 2007 00:00:00.000");
551 maxDate = dateTimeParser.parse("January 8, 2008 23:59:59.999");
552 roundToJanuaryFirst(minDate, maxDate, calendarField);
553 }
554
555
556
557
558
559
560
561 @Test
562 public void testRoundYear() throws Exception {
563 final int calendarField = Calendar.YEAR;
564 final Date roundedUpDate = dateTimeParser.parse("January 1, 2008 0:00:00.000");
565 final Date roundedDownDate = targetYearDate;
566 final Date lastRoundedDownDate = dateTimeParser.parse("June 30, 2007 23:59:59.999");
567 baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
568 }
569
570
571
572
573
574
575
576
577 @Test
578 public void testTruncateAmPm() throws Exception {
579 final int calendarField = Calendar.AM_PM;
580
581
582 Date lastTruncateDate = dateTimeParser.parse("June 1, 2008 11:59:59.999");
583 baseTruncateTest(targetAmDate, lastTruncateDate, calendarField);
584
585
586 lastTruncateDate = dateTimeParser.parse("June 1, 2008 23:59:59.999");
587 baseTruncateTest(targetPmDate, lastTruncateDate, calendarField);
588 }
589
590
591
592
593
594
595
596 @Test
597 public void testTruncateDate() throws Exception {
598 final int calendarField = Calendar.DATE;
599 final Date lastTruncateDate = dateTimeParser.parse("June 1, 2008 23:59:59.999");
600 baseTruncateTest(targetDateDate, lastTruncateDate, calendarField);
601 }
602
603
604
605
606
607
608
609 @Test
610 public void testTruncateDayOfMonth() throws Exception {
611 final int calendarField = Calendar.DAY_OF_MONTH;
612 final Date lastTruncateDate = dateTimeParser.parse("June 1, 2008 23:59:59.999");
613 baseTruncateTest(targetDayOfMonthDate, lastTruncateDate, calendarField);
614 }
615
616
617
618
619
620
621
622 @Test
623 public void testTruncateHour() throws Exception {
624 final int calendarField = Calendar.HOUR;
625 final Date lastTruncateDate = dateTimeParser.parse("June 1, 2008 8:59:59.999");
626 baseTruncateTest(targetHourDate, lastTruncateDate, calendarField);
627 }
628
629
630
631
632
633
634
635 @Test
636 public void testTruncateHourOfDay() throws Exception {
637 final int calendarField = Calendar.HOUR_OF_DAY;
638 final Date lastTruncateDate = dateTimeParser.parse("June 1, 2008 8:59:59.999");
639 baseTruncateTest(targetHourOfDayDate, lastTruncateDate, calendarField);
640 }
641
642
643
644
645
646
647 @Test
648 public void testTruncateMilliSecond() {
649 final int calendarField = Calendar.MILLISECOND;
650 baseTruncateTest(targetMilliSecondDate, targetMilliSecondDate, calendarField);
651 }
652
653
654
655
656
657
658
659 @Test
660 public void testTruncateMinute() throws Exception {
661 final int calendarField = Calendar.MINUTE;
662 final Date lastTruncateDate = dateTimeParser.parse("June 1, 2008 8:15:59.999");
663 baseTruncateTest(targetMinuteDate, lastTruncateDate, calendarField);
664 }
665
666
667
668
669
670
671
672 @Test
673 public void testTruncateMonth() throws Exception {
674 final int calendarField = Calendar.MONTH;
675 final Date truncatedDate = dateTimeParser.parse("March 1, 2008 0:00:00.000");
676 final Date lastTruncateDate = dateTimeParser.parse("March 31, 2008 23:59:59.999");
677 baseTruncateTest(truncatedDate, lastTruncateDate, calendarField);
678 }
679
680
681
682
683
684
685
686 @Test
687 public void testTruncateSecond() throws Exception {
688 final int calendarField = Calendar.SECOND;
689 final Date lastTruncateDate = dateTimeParser.parse("June 1, 2008 8:15:14.999");
690 baseTruncateTest(targetSecondDate, lastTruncateDate, calendarField);
691 }
692
693
694
695
696
697
698
699
700 @Test
701 public void testTruncateSemiMonth() throws Exception {
702 final int calendarField = DateUtils.SEMI_MONTH;
703 Date truncatedDate, lastTruncateDate;
704
705
706 truncatedDate = dateTimeParser.parse("February 1, 2007 0:00:00.000");
707 lastTruncateDate = dateTimeParser.parse("February 15, 2007 23:59:59.999");
708 baseTruncateTest(truncatedDate, lastTruncateDate, calendarField);
709
710
711 truncatedDate = dateTimeParser.parse("February 16, 2007 0:00:00.000");
712 lastTruncateDate = dateTimeParser.parse("February 28, 2007 23:59:59.999");
713 baseTruncateTest(truncatedDate, lastTruncateDate, calendarField);
714
715
716 truncatedDate = dateTimeParser.parse("February 1, 2008 0:00:00.000");
717 lastTruncateDate = dateTimeParser.parse("February 15, 2008 23:59:59.999");
718 baseTruncateTest(truncatedDate, lastTruncateDate, calendarField);
719
720
721 truncatedDate = dateTimeParser.parse("February 16, 2008 0:00:00.000");
722 lastTruncateDate = dateTimeParser.parse("February 29, 2008 23:59:59.999");
723 baseTruncateTest(truncatedDate, lastTruncateDate, calendarField);
724
725
726 truncatedDate = dateTimeParser.parse("April 1, 2008 0:00:00.000");
727 lastTruncateDate = dateTimeParser.parse("April 15, 2008 23:59:59.999");
728 baseTruncateTest(truncatedDate, lastTruncateDate, calendarField);
729
730
731 truncatedDate = dateTimeParser.parse("April 16, 2008 0:00:00.000");
732 lastTruncateDate = dateTimeParser.parse("April 30, 2008 23:59:59.999");
733 baseTruncateTest(truncatedDate, lastTruncateDate, calendarField);
734
735
736 truncatedDate = dateTimeParser.parse("March 1, 2008 0:00:00.000");
737 lastTruncateDate = dateTimeParser.parse("March 15, 2008 23:59:59.999");
738 baseTruncateTest(truncatedDate, lastTruncateDate, calendarField);
739
740
741 truncatedDate = dateTimeParser.parse("March 16, 2008 0:00:00.000");
742 lastTruncateDate = dateTimeParser.parse("March 31, 2008 23:59:59.999");
743 baseTruncateTest(truncatedDate, lastTruncateDate, calendarField);
744
745 }
746
747
748
749
750
751
752
753 @Test
754 public void testTruncateYear() throws Exception {
755 final int calendarField = Calendar.YEAR;
756 final Date lastTruncateDate = dateTimeParser.parse("December 31, 2007 23:59:59.999");
757 baseTruncateTest(targetYearDate, lastTruncateDate, calendarField);
758 }
759 }