commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jörg Schaible <Joerg.Schai...@Elsag-Solutions.com>
Subject RE: [beanutils] ISO Date converter
Date Mon, 06 Mar 2006 08:37:05 GMT
Henri Yandell wrote on Monday, March 06, 2006 9:02 AM:

> This seems like a useful class to me. Any reason not to add it?
> 
> http://issues.apache.org/bugzilla/show_bug.cgi?id=38772

It's way from complete. While some ISO8601formats are quite obscure, using UTC  is really
common, otherwise you're dependend on a time zone. With JDK 1.4 you can mimik this using the
'Z' formatting symbol ... but that does not exist in JDK 1.3 (but in lang.FastDateFormat).
Personally I have extended SimpleDateFormat to handle a lot of the ISO8601 (and to be able
to use the symbols of ISO 8601 to define a format):

    public void testAllStandardFormatter() {
        final Calendar calendar = Calendar.getInstance();
        calendar.setTimeZone(TimeZone.getTimeZone("Europe/Berlin"));
        calendar.setTimeInMillis(50);
        calendar.set(1968, Calendar.MAY, 28, 13, 30, 10);
        final Date date = calendar.getTime();
        assertEquals("680528", ISO8601DateFormat.BASIC_DATE.format(date));
        assertEquals("1968-05-28", ISO8601DateFormat.EXTENDED_DATE.format(date));
        assertEquals("133010", ISO8601DateFormat.BASIC_TIME.format(date));
        assertEquals("13:30:10", ISO8601DateFormat.EXTENDED_TIME.format(date));
        assertEquals("133010,050", ISO8601DateFormat.BASIC_TIME_FRACTION.format(date));
        assertEquals("13:30:10,050", ISO8601DateFormat.EXTENDED_TIME_FRACTION.format(date));
        assertEquals("123010Z", ISO8601DateFormat.BASIC_TIME_UTC.format(date));
        assertEquals("12:30:10Z", ISO8601DateFormat.EXTENDED_TIME_UTC.format(date));
        assertEquals("123010,050Z", ISO8601DateFormat.BASIC_TIME_UTC_FRACTION.format(date));
        assertEquals("12:30:10,050Z", ISO8601DateFormat.EXTENDED_TIME_UTC_FRACTION.format(date));
        assertEquals("123010+0000", ISO8601DateFormat.BASIC_TIME_OFFSET.format(date));
        assertEquals("12:30:10+0000", ISO8601DateFormat.EXTENDED_TIME_OFFSET.format(date));
        assertEquals("680528T133010", ISO8601DateFormat.BASIC_DATE_TIME.format(date));
        assertEquals("1968-05-28T13:30:10", ISO8601DateFormat.EXTENDED_DATE_TIME.format(date));
        assertEquals("680528T133010,050", ISO8601DateFormat.BASIC_DATE_TIME_FRACTION.format(date));
        assertEquals("1968-05-28T13:30:10,050", ISO8601DateFormat.EXTENDED_DATE_TIME_FRACTION.format(date));
        assertEquals("680528T123010Z", ISO8601DateFormat.BASIC_DATE_TIME_UTC.format(date));
        assertEquals("1968-05-28T12:30:10Z", ISO8601DateFormat.EXTENDED_DATE_TIME_UTC.format(date));
        assertEquals("680528T123010,050Z", ISO8601DateFormat.BASIC_DATE_TIME_UTC_FRACTION.format(date));
        assertEquals("1968-05-28T12:30:10,050Z", ISO8601DateFormat.EXTENDED_DATE_TIME_UTC_FRACTION.format(date));
        assertEquals("680528T123010+0000", ISO8601DateFormat.BASIC_DATE_TIME_OFFSET.format(date));
        assertEquals("1968-05-28T12:30:10+0000", ISO8601DateFormat.EXTENDED_DATE_TIME_OFFSET.format(date));
    }


That would be an IMHO an interesting extension to lang (since FastDateFormat provides the
necessary functionality and DateRangeUtils already deal with ISO8601 symbols). WDYT?

- Jörg

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org


Mime
View raw message