Bug #74511 [Nab]: Cannot construct a \DateTime from a valid format ("Y-\WW")
Edit report at https://bugs.php.net/bug.php?id=74511&edit=1
ID: 74511
User updated by: jack dot peterson at gmail dot com
Reported by: jack dot peterson at gmail dot com
Summary: Cannot construct a \DateTime from a valid format
("Y-\WW")
Status: Not a bug
Type: Bug
Package: Date/time related
Operating System: Ubuntu 16.04
PHP Version: 7.1.4
Block user comment: N
Private report: N
New Comment:
Fully realizing that dates are horridly complex to deal with ... I would have 2017-W1 represent
Sunday, January 1, 2017. That's a nice easy example, but I would have the \DateTime represent
the least significant date possible for the requested Week.
If we're classifying this as expected behavior due to the complexity of the above calculation,
then I would like to modify this report to a Documentation Request to have \Date's formats
reflect which values can be used to construct a valid \DateTime and which cannot as indicated with a
new column and a (*) indicating which values are acceptable inputs. The way the documentation is
currently written reads along the lines of, 'if you can format a date out the you ought to be
able to construct a \DateTime from the format for better or worse.
Previous Comments:
------------------------------------------------------------------------
[2017-04-28 18:04:27] jack dot peterson at gmail dot com
minor correction to comment above -- 1-52 would be the expected range, not 0-52 .. .that would be
more weeks than available in a given earth year :-P
------------------------------------------------------------------------
[2017-04-28 18:03:46] heiglandreas@php.net
The formats documented for 'date' are output formats, not input formats. Accepted formats
for DateTime::createFromFormat are explained at http://php.net/manual/de/datetime.createfromformat.php
- I can not find a "W" in there.
Even if it would be given there, what date would you expect it to return? First Day of the week?
Last Day of the Week? What is the first day of the week? Sunday? Monday? And why exactly
"should (one) be able to construct a date" with that? What exactly is your use case for
that?
------------------------------------------------------------------------
[2017-04-28 17:53:48] requinix@php.net
DateTime represents an actual date. What date would 2017-W01 represent?
------------------------------------------------------------------------
[2017-04-28 17:49:53] jack dot peterson at gmail dot com
Description:
------------
Given the format, 'Y-\WW', one should be able to construct a date such as 2017-W01 or
2017-W1 as a valid date where W is a number from 0-52 as documented for Date.
The expected behavior here would be to create a valid date w/ the next least-significant values to
be zeroed out. Current behavior is that one cannot construct a valid \DateTime from the requested
format.
Test script:
---------------
public function testCanCreateDateFromFormat() {
$format = 'Y-\WW';
$date = '2017-W01';
$obj = \DateTime::createFromFormat($format, $date);
$this->assertInstanceOf(\DateTime::class, $obj);
}
testCanCreateDateFromFormat
Failed asserting that false is an instance of class "DateTime".
Expected result:
----------------
\DateTime::createFromFormat should return an instance of \DateTime
Actual result:
--------------
\DateTime::createFromFormat returns false in this scenario.
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=74511&edit=1
Thread (6 messages)