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

 ID:                 53879
 Comment by:         bwhitehead at tableausoftware dot com
 Reported by:        noels01 at gmx dot net
 Summary:            DateTime::createFromFormat() fails to parse cookie
                     expiration date
 Status:             Open
 Type:               Bug
 Package:            Date/time related
 Operating System:   Win 7
 PHP Version:        5.3.5
 Block user comment: N
 Private report:     N

 New Comment:

Confirmed on MacOS 10.7.4 (PHP 5.3.10)

According to this page:
http://php.net/manual/en/class.datetime.php:
   const string COOKIE = "l, d-M-y H:i:s T" ;

According to this page: 
http://php.net/manual/en/datetime.createfromformat.php
  Value should be:"D, d-M-Y H:i:s T" or "D, d-M-Y H:i:s e"

The leading "Day of Week" (l) and "Year" (y) formats are incorrect.

Confirmed parsing of standard cookie date with either of the above formats.

Code:
DateTime::createFromFormat("D, d-M-Y H:i:s T", "Mon, 29-Sep-2014 01:21:00 GMT");
DateTime::createFromFormat("D, d-M-Y H:i:s e", "Mon, 29-Sep-2014 01:21:00 GMT");

Result:
object(DateTime)#1 (3) {
  ["date"]=>
  string(19) "2014-09-29 01:21:00"
  ["timezone_type"]=>
  int(2)
  ["timezone"]=>
  string(3) "GMT"
}
array(4) {
  ["warning_count"]=>
  int(0)
  ["warnings"]=>
  array(0) {
  }
  ["error_count"]=>
  int(0)
  ["errors"]=>
  array(0) {
  }
}


Previous Comments:
------------------------------------------------------------------------
[2011-01-29 16:43:13] noels01 at gmx dot net

Description:
------------
The class DateTime is supposed to handle date strings like used for cookie 
expiration dates. It explicitly defines the format DateTime::COOKIE but fails 
to parse it.

Test script:
---------------
<?php

$date = DateTime::createFromFormat(DateTime::COOKIE, "Mon, 21-Jan-2041 15:24:52 
GMT");
print_r($date);

?>

Same goes for 

<?php

$date = date_parse_from_format(DateTime::COOKIE, "Mon, 21-Jan-2041 15:24:52 
GMT");
print_r($date);

?>

Expected result:
----------------
Something with a date instead of NULL O.o

Actual result:
--------------
Array
(
    [year] => 2020
    [month] => 1
    [day] => 21
    [hour] => 41
    [minute] => 15
    [second] => 24
    [fraction] =>
    [warning_count] => 1
    [warnings] => Array
        (
            [25] => The parsed time was invalid
        )

    [error_count] => 4
    [errors] => Array
        (
            [16] => Unexpected data found.
            [22] => The timezone could not be found in the database
            [25] => Trailing data
        )

    [is_localtime] => 1
    [zone_type] => 0
)


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



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

Reply via email to