@Test public void testLANG815() { final Calendar calendar = Calendar.getInstance(); calendar.set(2012, 6, 30, 0, 0, 0); final long startMillis = calendar.getTimeInMillis(); calendar.set(2012, 8, 8); final long endMillis = calendar.getTimeInMillis(); assertEquals("1 9", DurationFormatUtils.formatPeriod(startMillis, endMillis, "M d")); }
@Test public void testFormatPeriodISO() { final TimeZone timeZone = TimeZone.getTimeZone("GMT-3"); final Calendar base = Calendar.getInstance(timeZone); base.set(1970, 0, 1, 0, 0, 0); base.set(Calendar.MILLISECOND, 0); final Calendar cal = Calendar.getInstance(timeZone); cal.set(2002, 1, 23, 9, 11, 12); cal.set(Calendar.MILLISECOND, 1); String text; // repeat a test from testDateTimeISO to compare extended and not extended. text = DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT.format(cal); assertEquals("2002-02-23T09:11:12-03:00", text); // test fixture is the same as above, but now with extended format. text = DurationFormatUtils.formatPeriod( base.getTime().getTime(), cal.getTime().getTime(), DurationFormatUtils.ISO_EXTENDED_FORMAT_PATTERN, false, timeZone); assertEquals("P32Y1M22DT9H11M12.001S", text); // test fixture from example in http://www.w3.org/TR/xmlschema-2/#duration cal.set(1971, 1, 3, 10, 30, 0); cal.set(Calendar.MILLISECOND, 0); text = DurationFormatUtils.formatPeriod( base.getTime().getTime(), cal.getTime().getTime(), DurationFormatUtils.ISO_EXTENDED_FORMAT_PATTERN, false, timeZone); assertEquals("P1Y1M2DT10H30M0.000S", text); // want a way to say 'don't print the seconds in format()' or other fields for that matter: // assertEquals("P1Y2M3DT10H30M", text); }
private void assertEqualDuration( final String message, final String expected, final int[] start, final int[] end, final String format) { final Calendar cal1 = Calendar.getInstance(); cal1.set(start[0], start[1], start[2], start[3], start[4], start[5]); cal1.set(Calendar.MILLISECOND, 0); final Calendar cal2 = Calendar.getInstance(); cal2.set(end[0], end[1], end[2], end[3], end[4], end[5]); cal2.set(Calendar.MILLISECOND, 0); final long milli1 = cal1.getTime().getTime(); final long milli2 = cal2.getTime().getTime(); final String result = DurationFormatUtils.formatPeriod(milli1, milli2, format); if (message == null) { assertEquals(expected, result); } else { assertEquals(message, expected, result); } }
@Test public void testFormatPeriod() { final Calendar cal1970 = Calendar.getInstance(); cal1970.set(1970, 0, 1, 0, 0, 0); cal1970.set(Calendar.MILLISECOND, 0); final long time1970 = cal1970.getTime().getTime(); assertEquals("0", DurationFormatUtils.formatPeriod(time1970, time1970, "y")); assertEquals("0", DurationFormatUtils.formatPeriod(time1970, time1970, "M")); assertEquals("0", DurationFormatUtils.formatPeriod(time1970, time1970, "d")); assertEquals("0", DurationFormatUtils.formatPeriod(time1970, time1970, "H")); assertEquals("0", DurationFormatUtils.formatPeriod(time1970, time1970, "m")); assertEquals("0", DurationFormatUtils.formatPeriod(time1970, time1970, "s")); assertEquals("0", DurationFormatUtils.formatPeriod(time1970, time1970, "S")); assertEquals("0000", DurationFormatUtils.formatPeriod(time1970, time1970, "SSSS")); assertEquals("0000", DurationFormatUtils.formatPeriod(time1970, time1970, "yyyy")); assertEquals("0000", DurationFormatUtils.formatPeriod(time1970, time1970, "yyMM")); long time = time1970 + 60 * 1000; assertEquals("0", DurationFormatUtils.formatPeriod(time1970, time, "y")); assertEquals("0", DurationFormatUtils.formatPeriod(time1970, time, "M")); assertEquals("0", DurationFormatUtils.formatPeriod(time1970, time, "d")); assertEquals("0", DurationFormatUtils.formatPeriod(time1970, time, "H")); assertEquals("1", DurationFormatUtils.formatPeriod(time1970, time, "m")); assertEquals("60", DurationFormatUtils.formatPeriod(time1970, time, "s")); assertEquals("60000", DurationFormatUtils.formatPeriod(time1970, time, "S")); assertEquals("01:00", DurationFormatUtils.formatPeriod(time1970, time, "mm:ss")); final Calendar cal = Calendar.getInstance(); cal.set(1973, 6, 1, 0, 0, 0); cal.set(Calendar.MILLISECOND, 0); time = cal.getTime().getTime(); assertEquals("36", DurationFormatUtils.formatPeriod(time1970, time, "yM")); assertEquals( "3 years 6 months", DurationFormatUtils.formatPeriod(time1970, time, "y' years 'M' months'")); assertEquals("03/06", DurationFormatUtils.formatPeriod(time1970, time, "yy/MM")); cal.set(1973, 10, 1, 0, 0, 0); cal.set(Calendar.MILLISECOND, 0); time = cal.getTime().getTime(); assertEquals("310", DurationFormatUtils.formatPeriod(time1970, time, "yM")); assertEquals( "3 years 10 months", DurationFormatUtils.formatPeriod(time1970, time, "y' years 'M' months'")); assertEquals("03/10", DurationFormatUtils.formatPeriod(time1970, time, "yy/MM")); cal.set(1974, 0, 1, 0, 0, 0); cal.set(Calendar.MILLISECOND, 0); time = cal.getTime().getTime(); assertEquals("40", DurationFormatUtils.formatPeriod(time1970, time, "yM")); assertEquals( "4 years 0 months", DurationFormatUtils.formatPeriod(time1970, time, "y' years 'M' months'")); assertEquals("04/00", DurationFormatUtils.formatPeriod(time1970, time, "yy/MM")); assertEquals("48", DurationFormatUtils.formatPeriod(time1970, time, "M")); assertEquals("48", DurationFormatUtils.formatPeriod(time1970, time, "MM")); assertEquals("048", DurationFormatUtils.formatPeriod(time1970, time, "MMM")); }