Bug #75577 [Com]: DateTime::createFromFormat does not accept RFC3339_EXTENDED format

From: Date: Mon, 27 Nov 2017 17:33:56 +0000
Subject: Bug #75577 [Com]: DateTime::createFromFormat does not accept RFC3339_EXTENDED format
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-212754@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=75577&edit=1

 ID:                 75577
 Comment by:         mariano@php.net
 Reported by:        php-bugs at dennis dot birkholz dot biz
 Summary:            DateTime::createFromFormat does not accept
                     RFC3339_EXTENDED format
 Status:             Assigned
 Type:               Bug
 Package:            Date/time related
 Operating System:   Linux
 PHP Version:        7.2.0RC6
 Assigned To:        derick
 Block user comment: N
 Private report:     N

 New Comment:

Pull request with fix and test: https://github.com/php/php-src/pull/2945


Previous Comments:
------------------------------------------------------------------------
[2017-11-27 03:57:31] php-bugs at dennis dot birkholz dot biz

Description:
------------
DateTime::createFromFormat(), DateTimeImmutable::createFromFormat() and date_create_from_format()
fail to create a DateTime(Immutable) object when the format is RFC3339_EXTENDED and a valid date
string is supplied but using the constructors / date_create() works.

See https://3v4l.org/shJD7

Test script:
---------------
<?php
$datestring = '2017-06-03T00:08:10.881UTC';

if ($date = DateTime::createFromFormat(DateTime::RFC3339_EXTENDED, $datestring)) {
    print_r($date);
} else {
    print_r(DateTime::getLastErrors());
}

if ($date = new DateTime($datestring)) {
    print_r($date);
} else {
    print_r(DateTime::getLastErrors());
}


Expected result:
----------------
DateTime Object
(
    [date] => 2017-06-03 00:08:10.881000
    [timezone_type] => 3
    [timezone] => UTC
)
DateTime Object
(
    [date] => 2017-06-03 00:08:10.881000
    [timezone_type] => 3
    [timezone] => UTC
)

Actual result:
--------------
Array
(
    [warning_count] => 0
    [warnings] => Array
        (
        )

    [error_count] => 2
    [errors] => Array
        (
            [20] => The format separator does not match
            [21] => The timezone could not be found in the database
        )

)
DateTime Object
(
    [date] => 2017-06-03 00:08:10.881000
    [timezone_type] => 3
    [timezone] => UTC
)


------------------------------------------------------------------------



--
Edit this bug report at https://bugs.php.net/bug.php?id=75577&edit=1


Thread (12 messages)

« previous php.bugs (#212754) next »