You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Henri Yandell (JIRA)" <ji...@apache.org> on 2009/09/15 09:13:57 UTC
[jira] Updated: (LANG-530) parseDate cannot parse ISO8601 dates
produced by FastDateFormat
[ https://issues.apache.org/jira/browse/LANG-530?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Henri Yandell updated LANG-530:
-------------------------------
Fix Version/s: 3.0
> 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)
> ....
> 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.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.