Bug #63863 [Csd->ReO]: DateTime:setDate() day not used after modify("first/last day of...")

From: Date: Wed, 15 Mar 2017 06:57:11 +0000
Subject: Bug #63863 [Csd->ReO]: DateTime:setDate() day not used after modify("first/last day of...")
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-207846@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=63863&edit=1

 ID:                 63863
 Updated by:         requinix@php.net
 Reported by:        brian dot feaver at sellingsource dot com
-Summary:            DateTime:setDate() date not used after modify("last
                     day of...")
+Summary:            DateTime:setDate() day not used after
                     modify("first/last day of...")
-Status:             Closed
+Status:             Re-Opened
 Type:               Bug
 Package:            Date/time related
 Operating System:   Mac OS X
-PHP Version:        5.3.20
+PHP Version:        7.1.2
-Assigned To:        cmb
+Assigned To:        
 Block user comment: N
 Private report:     N

 New Comment:

Still present in the case of *not* using modify: https://3v4l.org/EoLFW


Previous Comments:
------------------------------------------------------------------------
[2017-03-15 06:19:48] grandfelix at gmail dot com

This is still not fixed as it was said. Example below still does not work as expected.

$firstDayInMonth = new DateTime('first day of january');

echo $firstDayInMonth->setDate(date('Y'), 1,
date('d'))->format('Y-m-d');

Outputs:
2017-01-01

PHP: 7.0.6-3

------------------------------------------------------------------------
[2016-06-29 17:34:26] cmb@php.net

This issue has been fixed as of PHP 5.6.19 and 7.0.4, see
<https://3v4l.org/ATGLp> and <https://3v4l.org/H3jZY>.

------------------------------------------------------------------------
[2016-05-26 03:48:53] php dot net at multiwebinc dot com

This seems to happen only when using certain relative formats to create the DateTime object, such as
'last day of next month' or 'first day of this month', however 'last sat of
July 2008' *does not* cause the error.

------------------------------------------------------------------------
[2016-05-03 16:21:44] php-bugs at allenjb dot me dot uk

This also happens after using a "descriptive string" in the constructor:

$dtEnd = new \DateTime("last day of last month");
var_dump($dtEnd);
$dtEnd = $dtEnd->setDate(2016, 04, 03);
var_dump($dtEnd);

3v4l.org shows this bug appears to be in all versions of PHP 5 + 7 to date.

------------------------------------------------------------------------
[2015-10-30 04:45:47] whitearchey at gmail dot com

A simple workaround:
$date->modify('+0 day');

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


The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at

    https://bugs.php.net/bug.php?id=63863


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


Thread (15 messages)

« previous php.bugs (#207846) next »