> On 23 Dec 2015, at 23:07, Zefram (via RT) <perl6-bugs-follo...@perl.org> 
> wrote:
> 
> # New Ticket Created by  Zefram 
> # Please include the string:  [perl #127002]
> # in the subject line of all future correspondence about this issue. 
> # <URL: https://rt.perl.org/Ticket/Display.html?id=127002 >
> 
> 
> The documentation for DateTime.new says that when given a string input
> the string is to be in ISO 8601 format, and that an exception will be
> thrown when it is given an invalid string input.  In fact it accepts
> some non ISO 8601 strings:
> 
>    "2000-01-01T00:00:00+0000"  (mixed basic and extended representations)
>    "2000-01-01T00:00:00-00"    (wrong sign for zero timezone)
>    "2000-01-0\x[666]T00:00:00" (non-ASCII digit)
> 
> The first two failures are specific to the timezone portion of the string.
> Non-ASCII digits are accepted in all digit positions.

I tend to say ENOTABUG, as they are cases of “be liberal in what you accept” 
and they match the regular expression.  If they wouldn’t match that, *then* an 
exception would be thrown.

$ 6 'DateTime.new("2000-01-01T00:00:00+0000").say'
2000-01-01T00:00:00Z
$ 6 'DateTime.new(“2000-01-01T00:00:00-00").say'
2000-01-01T00:00:00Z
$ 6 'DateTime.new("2000-01-0\x[666]T00:00:00").say'
2000-01-06T00:00:00Z

They all seem to generate the correct DateTime object.  Note that if there is 
an error:

$ 6 'DateTime.new("2000-01-0\x[666]T00:00:90").say'
Second out of range. Is: 90, should be in ^61
$ 6 'DateTime.new("2000-01-0\x[666]TOOMUCH").say'
Invalid DateTime string '2000-01-0٦TOOMUCH'; use an ISO 8601 timestamp 
(yyyy-mm-ddThh:mm:ssZ or yyyy-mm-ddThh:mm:ss+01:00) instead


Liz

Reply via email to