001    /*
002     *  Copyright 2001-2005 Stephen Colebourne
003     *
004     *  Licensed under the Apache License, Version 2.0 (the "License");
005     *  you may not use this file except in compliance with the License.
006     *  You may obtain a copy of the License at
007     *
008     *      http://www.apache.org/licenses/LICENSE-2.0
009     *
010     *  Unless required by applicable law or agreed to in writing, software
011     *  distributed under the License is distributed on an "AS IS" BASIS,
012     *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013     *  See the License for the specific language governing permissions and
014     *  limitations under the License.
015     */
016    package org.joda.time.format;
017    
018    import java.util.Locale;
019    import java.util.TimeZone;
020    
021    import junit.framework.TestCase;
022    import junit.framework.TestSuite;
023    
024    import org.joda.time.DateTime;
025    import org.joda.time.DateTimeConstants;
026    import org.joda.time.DateTimeFieldType;
027    import org.joda.time.DateTimeUtils;
028    import org.joda.time.DateTimeZone;
029    import org.joda.time.Partial;
030    
031    /**
032     * This class is a Junit unit test for ISODateTimeFormat.
033     *
034     * @author Stephen Colebourne
035     */
036    public class TestISODateTimeFormat extends TestCase {
037    
038        private static final DateTimeZone UTC = DateTimeZone.UTC;
039        private static final DateTimeZone PARIS = DateTimeZone.forID("Europe/Paris");
040        private static final DateTimeZone LONDON = DateTimeZone.forID("Europe/London");
041        private static final DateTimeZone TOKYO = DateTimeZone.forID("Asia/Tokyo");
042    
043        long y2002days = 365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 + 
044                         366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 + 
045                         365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 +
046                         366 + 365;
047        // 2002-06-09
048        private long TEST_TIME_NOW =
049                (y2002days + 31L + 28L + 31L + 30L + 31L + 9L -1L) * DateTimeConstants.MILLIS_PER_DAY;
050    
051        private DateTimeZone originalDateTimeZone = null;
052        private TimeZone originalTimeZone = null;
053        private Locale originalLocale = null;
054    
055        public static void main(String[] args) {
056            junit.textui.TestRunner.run(suite());
057        }
058    
059        public static TestSuite suite() {
060            return new TestSuite(TestISODateTimeFormat.class);
061        }
062    
063        public TestISODateTimeFormat(String name) {
064            super(name);
065        }
066    
067        protected void setUp() throws Exception {
068            DateTimeUtils.setCurrentMillisFixed(TEST_TIME_NOW);
069            originalDateTimeZone = DateTimeZone.getDefault();
070            originalTimeZone = TimeZone.getDefault();
071            originalLocale = Locale.getDefault();
072            DateTimeZone.setDefault(LONDON);
073            TimeZone.setDefault(TimeZone.getTimeZone("Europe/London"));
074            Locale.setDefault(Locale.UK);
075        }
076    
077        protected void tearDown() throws Exception {
078            DateTimeUtils.setCurrentMillisSystem();
079            DateTimeZone.setDefault(originalDateTimeZone);
080            TimeZone.setDefault(originalTimeZone);
081            Locale.setDefault(originalLocale);
082            originalDateTimeZone = null;
083            originalTimeZone = null;
084            originalLocale = null;
085        }
086    
087        //-----------------------------------------------------------------------
088        public void testSubclassableConstructor() {
089            ISODateTimeFormat f = new ISODateTimeFormat() {
090                // test constructor is protected
091            };
092            assertNotNull(f);
093        }
094    
095        //-----------------------------------------------------------------------
096        public void testFormat_date() {
097            DateTime dt = new DateTime(2004, 6, 9, 10, 20, 30, 40, UTC);
098            assertEquals("2004-06-09", ISODateTimeFormat.date().print(dt));
099            
100            dt = dt.withZone(LONDON);
101            assertEquals("2004-06-09", ISODateTimeFormat.date().print(dt));
102            
103            dt = dt.withZone(PARIS);
104            assertEquals("2004-06-09", ISODateTimeFormat.date().print(dt));
105        }
106    
107        public void testFormat_date_partial() {
108            Partial dt = new Partial(
109                    new DateTimeFieldType[] {DateTimeFieldType.year(), DateTimeFieldType.monthOfYear(), DateTimeFieldType.dayOfMonth()},
110                    new int[] {2004, 6, 9});
111            assertEquals("2004-06-09", ISODateTimeFormat.date().print(dt));
112        }
113    
114        public void testFormat_time() {
115            DateTime dt = new DateTime(2004, 6, 9, 10, 20, 30, 40, UTC);
116            assertEquals("10:20:30.040Z", ISODateTimeFormat.time().print(dt));
117            
118            dt = dt.withZone(LONDON);
119            assertEquals("11:20:30.040+01:00", ISODateTimeFormat.time().print(dt));
120            
121            dt = dt.withZone(PARIS);
122            assertEquals("12:20:30.040+02:00", ISODateTimeFormat.time().print(dt));
123        }
124    
125        public void testFormat_time_partial() {
126            Partial dt = new Partial(
127                    new DateTimeFieldType[] {DateTimeFieldType.hourOfDay(), DateTimeFieldType.minuteOfHour(),
128                            DateTimeFieldType.secondOfMinute(), DateTimeFieldType.millisOfSecond()},
129                    new int[] {10, 20, 30, 40});
130            assertEquals("10:20:30.040", ISODateTimeFormat.time().print(dt));
131        }
132    
133        public void testFormat_timeNoMillis() {
134            DateTime dt = new DateTime(2004, 6, 9, 10, 20, 30, 40, UTC);
135            assertEquals("10:20:30Z", ISODateTimeFormat.timeNoMillis().print(dt));
136            
137            dt = dt.withZone(LONDON);
138            assertEquals("11:20:30+01:00", ISODateTimeFormat.timeNoMillis().print(dt));
139            
140            dt = dt.withZone(PARIS);
141            assertEquals("12:20:30+02:00", ISODateTimeFormat.timeNoMillis().print(dt));
142        }
143    
144        public void testFormat_timeNoMillis_partial() {
145            Partial dt = new Partial(
146                    new DateTimeFieldType[] {DateTimeFieldType.hourOfDay(), DateTimeFieldType.minuteOfHour(),
147                            DateTimeFieldType.secondOfMinute(), DateTimeFieldType.millisOfSecond()},
148                    new int[] {10, 20, 30, 40});
149            assertEquals("10:20:30", ISODateTimeFormat.timeNoMillis().print(dt));
150        }
151    
152        public void testFormat_tTime() {
153            DateTime dt = new DateTime(2004, 6, 9, 10, 20, 30, 40, UTC);
154            assertEquals("T10:20:30.040Z", ISODateTimeFormat.tTime().print(dt));
155            
156            dt = dt.withZone(LONDON);
157            assertEquals("T11:20:30.040+01:00", ISODateTimeFormat.tTime().print(dt));
158            
159            dt = dt.withZone(PARIS);
160            assertEquals("T12:20:30.040+02:00", ISODateTimeFormat.tTime().print(dt));
161        }
162    
163        public void testFormat_tTimeNoMillis() {
164            DateTime dt = new DateTime(2004, 6, 9, 10, 20, 30, 40, UTC);
165            assertEquals("T10:20:30Z", ISODateTimeFormat.tTimeNoMillis().print(dt));
166            
167            dt = dt.withZone(LONDON);
168            assertEquals("T11:20:30+01:00", ISODateTimeFormat.tTimeNoMillis().print(dt));
169            
170            dt = dt.withZone(PARIS);
171            assertEquals("T12:20:30+02:00", ISODateTimeFormat.tTimeNoMillis().print(dt));
172        }
173    
174        public void testFormat_dateTime() {
175            DateTime dt = new DateTime(2004, 6, 9, 10, 20, 30, 40, UTC);
176            assertEquals("2004-06-09T10:20:30.040Z", ISODateTimeFormat.dateTime().print(dt));
177            
178            dt = dt.withZone(LONDON);
179            assertEquals("2004-06-09T11:20:30.040+01:00", ISODateTimeFormat.dateTime().print(dt));
180            
181            dt = dt.withZone(PARIS);
182            assertEquals("2004-06-09T12:20:30.040+02:00", ISODateTimeFormat.dateTime().print(dt));
183            
184    //        dt = dt.withZone(LONDON);
185    //        assertEquals("2004-06-09T11:20:30.040+01:00", ISODateTimeFormat.getInstance(PARIS).dateTime().print(dt));
186    //        
187    //        dt = dt.withZone(LONDON);
188    //        assertEquals("2004-06-09T12:20:30.040+02:00", ISODateTimeFormat.dateTime().print(dt.getMillis(), PARIS));
189    //        
190    //        dt = new DateTime(2004, 6, 9, 10, 20, 30, 40, CopticChronology.getInstance());
191    //        assertEquals("2288-02-19T10:20:30.040Z", ISODateTimeFormat.dateTime().print(dt));
192    //        
193    //        dt = new DateTime(2004, 6, 9, 10, 20, 30, 40, CopticChronology.getInstance());
194    //        assertEquals("2004-06-09T10:20:30.040Z", ISODateTimeFormat.getInstance(CopticChronology.getInstance()).dateTime().print(dt));
195        }
196    
197        public void testFormat_dateTimeNoMillis() {
198            DateTime dt = new DateTime(2004, 6, 9, 10, 20, 30, 40, UTC);
199            assertEquals("2004-06-09T10:20:30Z", ISODateTimeFormat.dateTimeNoMillis().print(dt));
200            
201            dt = dt.withZone(LONDON);
202            assertEquals("2004-06-09T11:20:30+01:00", ISODateTimeFormat.dateTimeNoMillis().print(dt));
203            
204            dt = dt.withZone(PARIS);
205            assertEquals("2004-06-09T12:20:30+02:00", ISODateTimeFormat.dateTimeNoMillis().print(dt));
206        }
207    
208        public void testFormat_ordinalDate() {
209            DateTime dt = new DateTime(2004, 6, 9, 10, 20, 30, 40, UTC);
210            assertEquals("2004-161", ISODateTimeFormat.ordinalDate().print(dt));
211            
212            dt = dt.withZone(LONDON);
213            assertEquals("2004-161", ISODateTimeFormat.ordinalDate().print(dt));
214            
215            dt = dt.withZone(PARIS);
216            assertEquals("2004-161", ISODateTimeFormat.ordinalDate().print(dt));
217        }
218    
219        public void testFormat_ordinalDateTime() {
220            DateTime dt = new DateTime(2004, 6, 9, 10, 20, 30, 40, UTC);
221            assertEquals("2004-161T10:20:30.040Z", ISODateTimeFormat.ordinalDateTime().print(dt));
222            
223            dt = dt.withZone(LONDON);
224            assertEquals("2004-161T11:20:30.040+01:00", ISODateTimeFormat.ordinalDateTime().print(dt));
225            
226            dt = dt.withZone(PARIS);
227            assertEquals("2004-161T12:20:30.040+02:00", ISODateTimeFormat.ordinalDateTime().print(dt));
228        }
229    
230        public void testFormat_ordinalDateTimeNoMillis() {
231            DateTime dt = new DateTime(2004, 6, 9, 10, 20, 30, 40, UTC);
232            assertEquals("2004-161T10:20:30Z", ISODateTimeFormat.ordinalDateTimeNoMillis().print(dt));
233            
234            dt = dt.withZone(LONDON);
235            assertEquals("2004-161T11:20:30+01:00", ISODateTimeFormat.ordinalDateTimeNoMillis().print(dt));
236            
237            dt = dt.withZone(PARIS);
238            assertEquals("2004-161T12:20:30+02:00", ISODateTimeFormat.ordinalDateTimeNoMillis().print(dt));
239        }
240    
241        public void testFormat_weekDate() {
242            DateTime dt = new DateTime(2004, 6, 9, 10, 20, 30, 40, UTC);
243            assertEquals("2004-W24-3", ISODateTimeFormat.weekDate().print(dt));
244            
245            dt = dt.withZone(LONDON);
246            assertEquals("2004-W24-3", ISODateTimeFormat.weekDate().print(dt));
247            
248            dt = dt.withZone(PARIS);
249            assertEquals("2004-W24-3", ISODateTimeFormat.weekDate().print(dt));
250        }
251    
252        public void testFormat_weekDateTime() {
253            DateTime dt = new DateTime(2004, 6, 9, 10, 20, 30, 40, UTC);
254            assertEquals("2004-W24-3T10:20:30.040Z", ISODateTimeFormat.weekDateTime().print(dt));
255            
256            dt = dt.withZone(LONDON);
257            assertEquals("2004-W24-3T11:20:30.040+01:00", ISODateTimeFormat.weekDateTime().print(dt));
258            
259            dt = dt.withZone(PARIS);
260            assertEquals("2004-W24-3T12:20:30.040+02:00", ISODateTimeFormat.weekDateTime().print(dt));
261        }
262    
263        public void testFormat_weekDateTimeNoMillis() {
264            DateTime dt = new DateTime(2004, 6, 9, 10, 20, 30, 40, UTC);
265            assertEquals("2004-W24-3T10:20:30Z", ISODateTimeFormat.weekDateTimeNoMillis().print(dt));
266            
267            dt = dt.withZone(LONDON);
268            assertEquals("2004-W24-3T11:20:30+01:00", ISODateTimeFormat.weekDateTimeNoMillis().print(dt));
269            
270            dt = dt.withZone(PARIS);
271            assertEquals("2004-W24-3T12:20:30+02:00", ISODateTimeFormat.weekDateTimeNoMillis().print(dt));
272        }
273    
274        //-----------------------------------------------------------------------
275        public void testFormat_basicDate() {
276            DateTime dt = new DateTime(2004, 6, 9, 10, 20, 30, 40, UTC);
277            assertEquals("20040609", ISODateTimeFormat.basicDate().print(dt));
278            
279            dt = dt.withZone(LONDON);
280            assertEquals("20040609", ISODateTimeFormat.basicDate().print(dt));
281            
282            dt = dt.withZone(PARIS);
283            assertEquals("20040609", ISODateTimeFormat.basicDate().print(dt));
284        }
285    
286        public void testFormat_basicTime() {
287            DateTime dt = new DateTime(2004, 6, 9, 10, 20, 30, 40, UTC);
288            assertEquals("102030.040Z", ISODateTimeFormat.basicTime().print(dt));
289            
290            dt = dt.withZone(LONDON);
291            assertEquals("112030.040+0100", ISODateTimeFormat.basicTime().print(dt));
292            
293            dt = dt.withZone(PARIS);
294            assertEquals("122030.040+0200", ISODateTimeFormat.basicTime().print(dt));
295        }
296    
297        public void testFormat_basicTimeNoMillis() {
298            DateTime dt = new DateTime(2004, 6, 9, 10, 20, 30, 40, UTC);
299            assertEquals("102030Z", ISODateTimeFormat.basicTimeNoMillis().print(dt));
300            
301            dt = dt.withZone(LONDON);
302            assertEquals("112030+0100", ISODateTimeFormat.basicTimeNoMillis().print(dt));
303            
304            dt = dt.withZone(PARIS);
305            assertEquals("122030+0200", ISODateTimeFormat.basicTimeNoMillis().print(dt));
306        }
307    
308        public void testFormat_basicTTime() {
309            DateTime dt = new DateTime(2004, 6, 9, 10, 20, 30, 40, UTC);
310            assertEquals("T102030.040Z", ISODateTimeFormat.basicTTime().print(dt));
311            
312            dt = dt.withZone(LONDON);
313            assertEquals("T112030.040+0100", ISODateTimeFormat.basicTTime().print(dt));
314            
315            dt = dt.withZone(PARIS);
316            assertEquals("T122030.040+0200", ISODateTimeFormat.basicTTime().print(dt));
317        }
318    
319        public void testFormat_basicTTimeNoMillis() {
320            DateTime dt = new DateTime(2004, 6, 9, 10, 20, 30, 40, UTC);
321            assertEquals("T102030Z", ISODateTimeFormat.basicTTimeNoMillis().print(dt));
322            
323            dt = dt.withZone(LONDON);
324            assertEquals("T112030+0100", ISODateTimeFormat.basicTTimeNoMillis().print(dt));
325            
326            dt = dt.withZone(PARIS);
327            assertEquals("T122030+0200", ISODateTimeFormat.basicTTimeNoMillis().print(dt));
328        }
329    
330        public void testFormat_basicDateTime() {
331            DateTime dt = new DateTime(2004, 6, 9, 10, 20, 30, 40, UTC);
332            assertEquals("20040609T102030.040Z", ISODateTimeFormat.basicDateTime().print(dt));
333            
334            dt = dt.withZone(LONDON);
335            assertEquals("20040609T112030.040+0100", ISODateTimeFormat.basicDateTime().print(dt));
336            
337            dt = dt.withZone(PARIS);
338            assertEquals("20040609T122030.040+0200", ISODateTimeFormat.basicDateTime().print(dt));
339        }
340    
341        public void testFormat_basicDateTimeNoMillis() {
342            DateTime dt = new DateTime(2004, 6, 9, 10, 20, 30, 40, UTC);
343            assertEquals("20040609T102030Z", ISODateTimeFormat.basicDateTimeNoMillis().print(dt));
344            
345            dt = dt.withZone(LONDON);
346            assertEquals("20040609T112030+0100", ISODateTimeFormat.basicDateTimeNoMillis().print(dt));
347            
348            dt = dt.withZone(PARIS);
349            assertEquals("20040609T122030+0200", ISODateTimeFormat.basicDateTimeNoMillis().print(dt));
350        }
351    
352        public void testFormat_basicOrdinalDate() {
353            DateTime dt = new DateTime(2004, 6, 9, 10, 20, 30, 40, UTC);
354            assertEquals("2004161", ISODateTimeFormat.basicOrdinalDate().print(dt));
355            
356            dt = dt.withZone(LONDON);
357            assertEquals("2004161", ISODateTimeFormat.basicOrdinalDate().print(dt));
358            
359            dt = dt.withZone(PARIS);
360            assertEquals("2004161", ISODateTimeFormat.basicOrdinalDate().print(dt));
361        }
362    
363        public void testFormat_basicOrdinalDateTime() {
364            DateTime dt = new DateTime(2004, 6, 9, 10, 20, 30, 40, UTC);
365            assertEquals("2004161T102030.040Z", ISODateTimeFormat.basicOrdinalDateTime().print(dt));
366            
367            dt = dt.withZone(LONDON);
368            assertEquals("2004161T112030.040+0100", ISODateTimeFormat.basicOrdinalDateTime().print(dt));
369            
370            dt = dt.withZone(PARIS);
371            assertEquals("2004161T122030.040+0200", ISODateTimeFormat.basicOrdinalDateTime().print(dt));
372        }
373    
374        public void testFormat_basicOrdinalDateTimeNoMillis() {
375            DateTime dt = new DateTime(2004, 6, 9, 10, 20, 30, 40, UTC);
376            assertEquals("2004161T102030Z", ISODateTimeFormat.basicOrdinalDateTimeNoMillis().print(dt));
377            
378            dt = dt.withZone(LONDON);
379            assertEquals("2004161T112030+0100", ISODateTimeFormat.basicOrdinalDateTimeNoMillis().print(dt));
380            
381            dt = dt.withZone(PARIS);
382            assertEquals("2004161T122030+0200", ISODateTimeFormat.basicOrdinalDateTimeNoMillis().print(dt));
383        }
384    
385        public void testFormat_basicWeekDate() {
386            DateTime dt = new DateTime(2004, 6, 9, 10, 20, 30, 40, UTC);
387            assertEquals("2004W243", ISODateTimeFormat.basicWeekDate().print(dt));
388            
389            dt = dt.withZone(LONDON);
390            assertEquals("2004W243", ISODateTimeFormat.basicWeekDate().print(dt));
391            
392            dt = dt.withZone(PARIS);
393            assertEquals("2004W243", ISODateTimeFormat.basicWeekDate().print(dt));
394        }
395    
396        public void testFormat_basicWeekDateTime() {
397            DateTime dt = new DateTime(2004, 6, 9, 10, 20, 30, 40, UTC);
398            assertEquals("2004W243T102030.040Z", ISODateTimeFormat.basicWeekDateTime().print(dt));
399            
400            dt = dt.withZone(LONDON);
401            assertEquals("2004W243T112030.040+0100", ISODateTimeFormat.basicWeekDateTime().print(dt));
402            
403            dt = dt.withZone(PARIS);
404            assertEquals("2004W243T122030.040+0200", ISODateTimeFormat.basicWeekDateTime().print(dt));
405        }
406    
407        public void testFormat_basicWeekDateTimeNoMillis() {
408            DateTime dt = new DateTime(2004, 6, 9, 10, 20, 30, 40, UTC);
409            assertEquals("2004W243T102030Z", ISODateTimeFormat.basicWeekDateTimeNoMillis().print(dt));
410            
411            dt = dt.withZone(LONDON);
412            assertEquals("2004W243T112030+0100", ISODateTimeFormat.basicWeekDateTimeNoMillis().print(dt));
413            
414            dt = dt.withZone(PARIS);
415            assertEquals("2004W243T122030+0200", ISODateTimeFormat.basicWeekDateTimeNoMillis().print(dt));
416        }
417    
418        //-----------------------------------------------------------------------
419        public void testFormat_year() {
420            DateTime dt = new DateTime(2004, 6, 9, 10, 20, 30, 40, UTC);
421            assertEquals("2004", ISODateTimeFormat.year().print(dt));
422            
423            dt = dt.withZone(LONDON);
424            assertEquals("2004", ISODateTimeFormat.year().print(dt));
425            
426            dt = dt.withZone(PARIS);
427            assertEquals("2004", ISODateTimeFormat.year().print(dt));
428        }
429    
430        public void testFormat_yearMonth() {
431            DateTime dt = new DateTime(2004, 6, 9, 10, 20, 30, 40, UTC);
432            assertEquals("2004-06", ISODateTimeFormat.yearMonth().print(dt));
433            
434            dt = dt.withZone(LONDON);
435            assertEquals("2004-06", ISODateTimeFormat.yearMonth().print(dt));
436            
437            dt = dt.withZone(PARIS);
438            assertEquals("2004-06", ISODateTimeFormat.yearMonth().print(dt));
439        }
440    
441        public void testFormat_yearMonthDay() {
442            DateTime dt = new DateTime(2004, 6, 9, 10, 20, 30, 40, UTC);
443            assertEquals("2004-06-09", ISODateTimeFormat.yearMonthDay().print(dt));
444            
445            dt = dt.withZone(LONDON);
446            assertEquals("2004-06-09", ISODateTimeFormat.yearMonthDay().print(dt));
447            
448            dt = dt.withZone(PARIS);
449            assertEquals("2004-06-09", ISODateTimeFormat.yearMonthDay().print(dt));
450        }
451    
452        public void testFormat_weekyear() {
453            DateTime dt = new DateTime(2004, 6, 9, 10, 20, 30, 40, UTC);
454            assertEquals("2004", ISODateTimeFormat.weekyear().print(dt));
455            
456            dt = dt.withZone(LONDON);
457            assertEquals("2004", ISODateTimeFormat.weekyear().print(dt));
458            
459            dt = dt.withZone(PARIS);
460            assertEquals("2004", ISODateTimeFormat.weekyear().print(dt));
461        }
462    
463        public void testFormat_weekyearWeek() {
464            DateTime dt = new DateTime(2004, 6, 9, 10, 20, 30, 40, UTC);
465            assertEquals("2004-W24", ISODateTimeFormat.weekyearWeek().print(dt));
466            
467            dt = dt.withZone(LONDON);
468            assertEquals("2004-W24", ISODateTimeFormat.weekyearWeek().print(dt));
469            
470            dt = dt.withZone(PARIS);
471            assertEquals("2004-W24", ISODateTimeFormat.weekyearWeek().print(dt));
472        }
473    
474        public void testFormat_weekyearWeekDay() {
475            DateTime dt = new DateTime(2004, 6, 9, 10, 20, 30, 40, UTC);
476            assertEquals("2004-W24-3", ISODateTimeFormat.weekyearWeekDay().print(dt));
477            
478            dt = dt.withZone(LONDON);
479            assertEquals("2004-W24-3", ISODateTimeFormat.weekyearWeekDay().print(dt));
480            
481            dt = dt.withZone(PARIS);
482            assertEquals("2004-W24-3", ISODateTimeFormat.weekyearWeekDay().print(dt));
483        }
484    
485        //-----------------------------------------------------------------------
486        public void testFormat_hour() {
487            DateTime dt = new DateTime(2004, 6, 9, 10, 20, 30, 40, UTC);
488            assertEquals("10", ISODateTimeFormat.hour().print(dt));
489            
490            dt = dt.withZone(LONDON);
491            assertEquals("11", ISODateTimeFormat.hour().print(dt));
492            
493            dt = dt.withZone(PARIS);
494            assertEquals("12", ISODateTimeFormat.hour().print(dt));
495        }
496    
497        public void testFormat_hourMinute() {
498            DateTime dt = new DateTime(2004, 6, 9, 10, 20, 30, 40, UTC);
499            assertEquals("10:20", ISODateTimeFormat.hourMinute().print(dt));
500            
501            dt = dt.withZone(LONDON);
502            assertEquals("11:20", ISODateTimeFormat.hourMinute().print(dt));
503            
504            dt = dt.withZone(PARIS);
505            assertEquals("12:20", ISODateTimeFormat.hourMinute().print(dt));
506        }
507    
508        public void testFormat_hourMinuteSecond() {
509            DateTime dt = new DateTime(2004, 6, 9, 10, 20, 30, 40, UTC);
510            assertEquals("10:20:30", ISODateTimeFormat.hourMinuteSecond().print(dt));
511            
512            dt = dt.withZone(LONDON);
513            assertEquals("11:20:30", ISODateTimeFormat.hourMinuteSecond().print(dt));
514            
515            dt = dt.withZone(PARIS);
516            assertEquals("12:20:30", ISODateTimeFormat.hourMinuteSecond().print(dt));
517        }
518    
519        public void testFormat_hourMinuteSecondMillis() {
520            DateTime dt = new DateTime(2004, 6, 9, 10, 20, 30, 40, UTC);
521            assertEquals("10:20:30.040", ISODateTimeFormat.hourMinuteSecondMillis().print(dt));
522            
523            dt = dt.withZone(LONDON);
524            assertEquals("11:20:30.040", ISODateTimeFormat.hourMinuteSecondMillis().print(dt));
525            
526            dt = dt.withZone(PARIS);
527            assertEquals("12:20:30.040", ISODateTimeFormat.hourMinuteSecondMillis().print(dt));
528        }
529    
530        public void testFormat_hourMinuteSecondFraction() {
531            DateTime dt = new DateTime(2004, 6, 9, 10, 20, 30, 40, UTC);
532            assertEquals("10:20:30.040", ISODateTimeFormat.hourMinuteSecondFraction().print(dt));
533            
534            dt = dt.withZone(LONDON);
535            assertEquals("11:20:30.040", ISODateTimeFormat.hourMinuteSecondFraction().print(dt));
536            
537            dt = dt.withZone(PARIS);
538            assertEquals("12:20:30.040", ISODateTimeFormat.hourMinuteSecondFraction().print(dt));
539        }
540    
541        //-----------------------------------------------------------------------
542        public void testFormat_dateHour() {
543            DateTime dt = new DateTime(2004, 6, 9, 10, 20, 30, 40, UTC);
544            assertEquals("2004-06-09T10", ISODateTimeFormat.dateHour().print(dt));
545            
546            dt = dt.withZone(LONDON);
547            assertEquals("2004-06-09T11", ISODateTimeFormat.dateHour().print(dt));
548            
549            dt = dt.withZone(PARIS);
550            assertEquals("2004-06-09T12", ISODateTimeFormat.dateHour().print(dt));
551        }
552    
553        public void testFormat_dateHourMinute() {
554            DateTime dt = new DateTime(2004, 6, 9, 10, 20, 30, 40, UTC);
555            assertEquals("2004-06-09T10:20", ISODateTimeFormat.dateHourMinute().print(dt));
556            
557            dt = dt.withZone(LONDON);
558            assertEquals("2004-06-09T11:20", ISODateTimeFormat.dateHourMinute().print(dt));
559            
560            dt = dt.withZone(PARIS);
561            assertEquals("2004-06-09T12:20", ISODateTimeFormat.dateHourMinute().print(dt));
562        }
563    
564        public void testFormat_dateHourMinuteSecond() {
565            DateTime dt = new DateTime(2004, 6, 9, 10, 20, 30, 40, UTC);
566            assertEquals("2004-06-09T10:20:30", ISODateTimeFormat.dateHourMinuteSecond().print(dt));
567            
568            dt = dt.withZone(LONDON);
569            assertEquals("2004-06-09T11:20:30", ISODateTimeFormat.dateHourMinuteSecond().print(dt));
570            
571            dt = dt.withZone(PARIS);
572            assertEquals("2004-06-09T12:20:30", ISODateTimeFormat.dateHourMinuteSecond().print(dt));
573        }
574    
575        public void testFormat_dateHourMinuteSecondMillis() {
576            DateTime dt = new DateTime(2004, 6, 9, 10, 20, 30, 40, UTC);
577            assertEquals("2004-06-09T10:20:30.040", ISODateTimeFormat.dateHourMinuteSecondMillis().print(dt));
578            
579            dt = dt.withZone(LONDON);
580            assertEquals("2004-06-09T11:20:30.040", ISODateTimeFormat.dateHourMinuteSecondMillis().print(dt));
581            
582            dt = dt.withZone(PARIS);
583            assertEquals("2004-06-09T12:20:30.040", ISODateTimeFormat.dateHourMinuteSecondMillis().print(dt));
584        }
585    
586        public void testFormat_dateHourMinuteSecondFraction() {
587            DateTime dt = new DateTime(2004, 6, 9, 10, 20, 30, 40, UTC);
588            assertEquals("2004-06-09T10:20:30.040", ISODateTimeFormat.dateHourMinuteSecondFraction().print(dt));
589            
590            dt = dt.withZone(LONDON);
591            assertEquals("2004-06-09T11:20:30.040", ISODateTimeFormat.dateHourMinuteSecondFraction().print(dt));
592            
593            dt = dt.withZone(PARIS);
594            assertEquals("2004-06-09T12:20:30.040", ISODateTimeFormat.dateHourMinuteSecondFraction().print(dt));
595        }
596    
597    }