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

 ID:                 63863
 Comment by:         php at seven dot net dot nz
 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:

Confirmed still a bug in 5.5.4 on Mac OS X.


Previous Comments:
------------------------------------------------------------------------
[2013-08-02 00:38:48] f21 dot groups at gmail dot com

I am also seeing this in PHP 5.5.1 on Ubuntu 13.04 x64.

------------------------------------------------------------------------
[2013-04-04 17:03:08] armin at fruux dot com

Besides from being able to reproduce this completely, it also happens
when using setTimestamp(), as the day keeps being 'last day of month'.

PHP version: 5.4.9
OS: Mac OS X


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

$date = new DateTime('2012-03-30');

$date->modify("last day of last month");
var_dump($date->format('Y-m-d')); // correctly last day of Feb

$date->setTimestamp(1327881600); // 2012-01-30
var_dump($date->format('Y-m-d')); // incorrect date

$date->modify('2012-01-30');
var_dump($date->format('Y-m-d')); // does set correct date

------------------------------------------------------------------------
[2012-12-27 18:52:32] brian dot feaver at sellingsource dot com

Description:
------------
When modifying a DateTime object with modify("last day of last month") syntax 
and 
followed by a setDate(), the date portion of setDate() is ignored. It modifies 
the 
year and the month, but continues to set the day portion to the last day of the 
month.

If modify() is called with the absolute date instead of setDate(), it correctly 
sets the date.

Test script:
---------------
<?php
$date = new DateTime('2012-03-30');

$date->modify("last day of last month");
var_dump($date->format('Y-m-d')); // correctly last day of Feb

$date->setDate(2012, 1, 30);
var_dump($date->format('Y-m-d')); // incorrect date

$date->modify('2012-01-30');
var_dump($date->format('Y-m-d')); // does set correct date


Expected result:
----------------
string(10) "2012-02-29"
string(10) "2012-01-30"
string(10) "2012-01-30"

Actual result:
--------------
string(10) "2012-02-29"
string(10) "2012-01-31"
string(10) "2012-01-30"


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



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

Reply via email to