Bug #63863 [Com]: DateTime:setDate() date not used after modify("last day of...")

From: Date: Thu, 26 May 2016 03:48:58 +0000
Subject: Bug #63863 [Com]: DateTime:setDate() date not used after modify("last day of...")
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-201277@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 Comment by: php dot net at multiwebinc dot com Reported by: brian dot feaver at sellingsource dot com Summary: DateTime:setDate() date not used after modify("last day of...") Status: Open Type: Bug Package: Date/time related Operating System: Mac OS X PHP Version: 5.3.20 Block user comment: N Private report: N New Comment: 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. Previous Comments: ------------------------------------------------------------------------ [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'); ------------------------------------------------------------------------ [2014-06-25 11:01:34] gsdev at me dot com Hi, This is happening on Mac OS X 10.8.5 PHP 5.5.0 (cli) (built: Jun 21 2013 12:09:38) Copyright (c) 1997-2013 The PHP Group Zend Engine v2.5.0-dev, Copyright (c) 1998-2013 Zend Technologies with Xdebug v2.2.2, Copyright (c) 2002-2013, by Derick Rethans It looks to be working in PHP 5.2 but broke in PHP 5.3 onwards. http://3v4l.org/H3jZY <?php date_default_timezone_set('UTC'); $date = new DateTime(null, new DateTimeZone('UTC')); $date->setTime(0,0,0); $date->modify('next month'); $date->modify('last day of this month'); $date->setDate(2014, 1, 21); // This should be 21st Jan 2014 echo $date->format('Y-m-d'); ------------------------------------------------------------------------ [2014-01-14 09:45:12] ieskok at ramuno dot lt Confirmed in 5.5.7 & 5.5.8 on Ubuntu 12.04 x64 ------------------------------------------------------------------------ [2013-11-27 17:29:56] derick@php.net Not quite sure whether this patch is correct, but I'll check it out! ------------------------------------------------------------------------ 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

« previous php.bugs (#201277) next »