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

 ID:                 50916
 Updated by:         ras...@php.net
 Reported by:        charlesb at itsmystuff dot com
 Summary:            DateTime::sub repeats each time getTimestamp is
                     called
 Status:             Duplicate
 Type:               Bug
 Package:            Date/time related
 Operating System:   Windows Server 2003 SP2
 PHP Version:        5.3.1
 Block user comment: N

 New Comment:

Sure, if you follow the links here you will see it was fixed in 5.3.3
which has 

been out for 2 months now.


Previous Comments:
------------------------------------------------------------------------
[2010-09-20 07:33:07] david dot wright at opticsplanet dot com

Problem is still alive and kicking under 5.3.2.



I had it happen repetition of prior sub() right after a call to
getTimeStamp().

Easily the most aggravating "not-my-bug-but-the-language-itself" I've
ever 

encountered.

------------------------------------------------------------------------
[2010-03-10 09:00:03] yoarvi at gmail dot com

The fix for http://bugs.php.net/bug.php?id=49059 fixes this problem as
well. I think this bug can be closed as a duplicate of 49059.

------------------------------------------------------------------------
[2010-03-02 23:00:01] v-ryanbi at microsoft dot com

I've attached a patch that is tested on Windows, although the code that
needs to be changed appears to be universal. The patch also includes a
.phpt that compares the resulting timestamps.



The fix for this is a bit disconcerting for me, but as I'm not entirely
familiar with the codebase, I didn't want to muck things up too much.



Shouldn't the c function do_adjust_relative() in tm2unixtime.c be the
one to clear the flags it uses after it applies changes? If we're
clearing the flags in the calling functions, we're bound to miss more
stuff like this one.

------------------------------------------------------------------------
[2010-02-20 10:28:40] pontus dot alexander at gmail dot com

This bug is confirmed to still be alive in snapshot "5.3-201002200930"
compiled on Debian Linux.



Reproduction code:

$Time = new \DateTime('NOW');

$Month = new \DateInterval('P1Y');



var_dump($Time);



// Correctly subtracted

$Time->sub($Month); 



var_dump($Time);



// Wrongly subtracted

$Time->getTimestamp();



var_dump($Time);

------------------------------------------------------------------------
[2010-02-02 18:04:23] charlesb at itsmystuff dot com

Description:
------------
Each time DateTime::getTimestamp is called, a previously called
DateTime::sub value is applied.  This does not occur with DateTime::add.

Reproduce code:
---------------
$work_time = new DateTime("2010-01-30 12:00:00"); 

$work_time->sub(new DateInterval("P7D"));

$window_start = $work_time->getTimestamp();

echo date("Y-m-d H:i:s", $window_start) . "<br />";

$window_start = $work_time->getTimestamp();

echo date("Y-m-d H:i:s", $window_start) . "<br />";

Expected result:
----------------
2010-01-23 12:00:00

2010-01-23 12:00:00

Actual result:
--------------
2010-01-16 12:00:00

2010-01-09 12:00:00


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



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

Reply via email to