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

From: Date: Mon, 27 Nov 2017 19:28:23 +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-212756@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: PHP's PR with failing test: https://github.com/php/php-src/pull/2945 Fix in timelib: https://github.com/derickr/timelib/pull/29 Previous Comments: ------------------------------------------------------------------------ [2017-11-27 17:33:54] mariano@php.net Pull request with fix and test: https://github.com/php/php-src/pull/2945 ------------------------------------------------------------------------ [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

« previous php.bugs (#212756) next »