commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Henri Yandell (JIRA)" <j...@apache.org>
Subject [jira] Updated: (LANG-530) parseDate cannot parse ISO8601 dates produced by FastDateFormat
Date Tue, 15 Sep 2009 07:15:57 GMT

     [ https://issues.apache.org/jira/browse/LANG-530?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Henri Yandell updated LANG-530:
-------------------------------

    Description: 
I cannot see why this is failing but here is my code:

   Date parseDate(String dateStr) {
       Date d = null;
       if (dateStr != null && ! "".equals(dateStr)) {
           try {
               // try to parse the date from ISO8601, general
formats, and RFC-2822
               d = DateUtils.parseDate(dateStr, new String[] {

DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT.getPattern()
                       });
           } catch (ParseException e) {
               // nothing to do
               log.info("Failed to parse: " + dateStr + ":" + e, e);
               d = null;
           }
       }
       return d;
   }

The string I am sending in to that method was generated like this:
String isoDateStr = DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT.format(date);

The exception is:
2009-09-03 13:29:37,644 [399355530@qtp3-2] INFO
search.SOLRSearchService  - Failed to parse:
2009-09-03T13:29:30+01:00:java.text.ParseException: Unable to parse
the date: 2009-09-03T13:29:30+01:00
java.text.ParseException: Unable to parse the date: 2009-09-03T13:29:30+01:00
       at org.apache.commons.lang.time.DateUtils.parseDate(DateUtils.java:285)
       at org.steeple.impl.search.SOLRSearchService.parseDate(SOLRSearchService.java:412)
       at org.steeple.impl.search.SOLRSearchService.execute(SOLRSearchService.java:311)
....



  was:
I cannot see why this is failing but here is my code:

   Date parseDate(String dateStr) {
       Date d = null;
       if (dateStr != null && ! "".equals(dateStr)) {
           try {
               // try to parse the date from ISO8601, general
formats, and RFC-2822
               d = DateUtils.parseDate(dateStr, new String[] {

DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT.getPattern()
                       });
           } catch (ParseException e) {
               // nothing to do
               log.info("Failed to parse: " + dateStr + ":" + e, e);
               d = null;
           }
       }
       return d;
   }

The string I am sending in to that method was generated like this:
String isoDateStr = DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT.format(date);

The exception is:
2009-09-03 13:29:37,644 [399355530@qtp3-2] INFO
search.SOLRSearchService  - Failed to parse:
2009-09-03T13:29:30+01:00:java.text.ParseException: Unable to parse
the date: 2009-09-03T13:29:30+01:00
java.text.ParseException: Unable to parse the date: 2009-09-03T13:29:30+01:00
       at org.apache.commons.lang.time.DateUtils.parseDate(DateUtils.java:285)
       at org.steeple.impl.search.SOLRSearchService.parseDate(SOLRSearchService.java:412)
       at org.steeple.impl.search.SOLRSearchService.execute(SOLRSearchService.java:311)
....

Issue seems to be that DateFormatUtils.ISO_DATETIME objects are
FastDateFormat objects; whereas parseDate uses SimpleDateFormat. The
former supports "ZZ" whereas the latter does not.

Java 1.4 (not sure about later) had 'Z' which meant +0100.
FastDateFormat adds 'ZZ' to support the ISO standard of +01:00. ie)
presumably your actual value is +0100+0100.

Solution is probably to have parseDate use FastDateFormat, though
there will always be the issue that getPattern from FastDateFormat may
not work with SimpleDateFormat.


Issue seems to be that DateFormatUtils.ISO_DATETIME objects are
FastDateFormat objects; whereas parseDate uses SimpleDateFormat. The
former supports "ZZ" whereas the latter does not.

Java 1.4 (not sure about later) had 'Z' which meant +0100.
FastDateFormat adds 'ZZ' to support the ISO standard of +01:00. ie)
presumably your actual value is +0100+0100.

Solution is probably to have parseDate use FastDateFormat, though
there will always be the issue that getPattern from FastDateFormat may
not work with SimpleDateFormat.

> parseDate cannot parse ISO8601 dates produced by FastDateFormat
> ---------------------------------------------------------------
>
>                 Key: LANG-530
>                 URL: https://issues.apache.org/jira/browse/LANG-530
>             Project: Commons Lang
>          Issue Type: Bug
>    Affects Versions: 2.4
>            Reporter: Aaron Zeckoski
>             Fix For: 3.0
>
>
> I cannot see why this is failing but here is my code:
>    Date parseDate(String dateStr) {
>        Date d = null;
>        if (dateStr != null && ! "".equals(dateStr)) {
>            try {
>                // try to parse the date from ISO8601, general
> formats, and RFC-2822
>                d = DateUtils.parseDate(dateStr, new String[] {
> DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT.getPattern()
>                        });
>            } catch (ParseException e) {
>                // nothing to do
>                log.info("Failed to parse: " + dateStr + ":" + e, e);
>                d = null;
>            }
>        }
>        return d;
>    }
> The string I am sending in to that method was generated like this:
> String isoDateStr = DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT.format(date);
> The exception is:
> 2009-09-03 13:29:37,644 [399355530@qtp3-2] INFO
> search.SOLRSearchService  - Failed to parse:
> 2009-09-03T13:29:30+01:00:java.text.ParseException: Unable to parse
> the date: 2009-09-03T13:29:30+01:00
> java.text.ParseException: Unable to parse the date: 2009-09-03T13:29:30+01:00
>        at org.apache.commons.lang.time.DateUtils.parseDate(DateUtils.java:285)
>        at org.steeple.impl.search.SOLRSearchService.parseDate(SOLRSearchService.java:412)
>        at org.steeple.impl.search.SOLRSearchService.execute(SOLRSearchService.java:311)
> ....

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message