RFR:JDK-8032051:"ZonedDateTime" class "parse" method fails with short time zone offset ("+01")
Stephen Colebourne
scolebourne at joda.org
Tue Feb 23 11:47:01 UTC 2016
Thanks for the changes.
In `DateTimeFormatter`, the code should be
.parseLenient()
.appendOffsetId()
.parseStrict()
and the same in the other case. This ensures that existing callers who
then embed the formatter in another formatter (like the
ZONED_DATE_TIME constant) are unaffected.
The logic for lenient parsing does not look right as it only handles
types 5 and 6. This table shows the mappings needed:
"+HH", -> "+HHmmss" or "+HH:mm:ss"
"+HHmm", -> "+HHmmss",
"+HH:mm", -> "+HH:mm:ss",
"+HHMM", -> "+HHmmss",
"+HH:MM", -> "+HH:mm:ss",
"+HHMMss", -> "+HHmmss",
"+HH:MM:ss", -> "+HH:mm:ss",
"+HHMMSS", -> "+HHmmss",
"+HH:MM:SS", -> "+HH:mm:ss",
"+HHmmss",
"+HH:mm:ss",
Note that the "+HH" pattern is a special case, as we don't know
whether to use the colon or non-colon pattern. Whether to require
colon or not is based on whether the next character after the HH is a
colon or not.
Proposed appendOffsetId() Javadoc:
* Appends the zone offset, such as '+01:00', to the formatter.
* <p>
* This appends an instruction to format/parse the offset ID to the builder.
* This is equivalent to calling {@code appendOffset("+HH:MM:ss", "Z")}.
* See {@link #appendOffset(String, String)} for details on formatting
and parsing.
Proposed appendOffset(String, String) Javadoc:
* During parsing, the offset...
changed to:
* When parsing in strict mode, the input must contain the mandatory
and optional elements are defined by the specified pattern.
* If the offset cannot be parsed then an exception is thrown unless
the section of the formatter is optional.
* <p>
* When parsing in lenient mode, only the hours are mandatory - minutes
and seconds are optional.
* The colons are required if the specified pattern contains a colon.
* If the specified pattern is "+HH", the presence of colons is
determined by whether the character after the hour digits is a colon
or not.
* If the offset cannot be parsed then an exception is thrown unless
the section of the formatter is optional.
thanks and sorry for delay
Stephen
On 11 February 2016 at 20:22, nadeesh tv <nadeesh.tv at oracle.com> wrote:
> Hi all,
>
> Please review a fix for
>
> Bug Id https://bugs.openjdk.java.net/browse/JDK-8032051
>
> webrev http://cr.openjdk.java.net/~ntv/8032051/webrev.01/
>
> --
> Thanks and Regards,
> Nadeesh TV
>
More information about the core-libs-dev
mailing list