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

 ID:                 52798
 Updated by:         s...@php.net
 Reported by:        ebinachon at pierre-vacances dot fr
 Summary:            dateTime => function diff => days KO
-Status:             Verified
+Status:             Feedback
 Type:               Bug
 Package:            Date/time related
 Operating System:   windows xp
 PHP Version:        5.3.3
 Assigned To:        derick
 Block user comment: N
 Private report:     N

 New Comment:

Please try using this snapshot:

  http://snaps.php.net/php5.3-latest.tar.gz
 
For Windows:

  http://windows.php.net/snapshots/

Works fine for me with current SVN 5.3 HEAD.


Previous Comments:
------------------------------------------------------------------------
[2010-09-08 18:12:46] cataphr...@php.net

The problem was the call to floor().



The compiler gave a warning:

"d:\users\cataphract\documents\php-trunk\ext\date\lib\interval.c(57) :
warning C4013: 'floor' undefined; assuming extern returning int"



The assumption is wrong, because it calls



double  __cdecl floor(_In_ double _X);



Which takes and returns a larger type.



I removed the call to floor, which is unnecessary since it's an integer
division.



I also changed the call to abs to a call to llabs to avoid the
conversion from long long to int and then to long long again.

------------------------------------------------------------------------
[2010-09-08 18:03:46] cataphr...@php.net

The following patch has been added/updated:

Patch Name: date_diff
Revision:   1283961826
URL:       
http://bugs.php.net/patch-display.php?bug=52798&patch=date_diff&revision=1283961826

------------------------------------------------------------------------
[2010-09-08 17:36:02] cataphr...@php.net

I can reproduce only on Windows. The exactly value varies (seems to be
garbage memory).

------------------------------------------------------------------------
[2010-09-08 17:19:52] ebinachon at pierre-vacances dot fr

Description:
------------
I have a probleme with the function diff of dateTime.

When i do a test, the "days" result is always : 6015.

All the other informations ( Y, m, d, ... ) are correct.



Have-you an idea ?



Test script:
---------------
Exemple :

$date1 = new DateTime('2010-01-01');

$date2 = new DateTime('2010-03-13');

$interval = $date2->diff($date1);

Zend_Debug::dump($interval);

//OR 

Zend_Debug::dump($interval->format('%a'));



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



Result :

object(DateInterval)#174 (8) {

  ["y"] => int(0)

  ["m"] => int(2)

  ["d"] => int(12)

  ["h"] => int(0)

  ["i"] => int(0)

  ["s"] => int(0)

  ["invert"] => int(0)

  ["days"] => int(6015)

}

Expected result:
----------------
days => 71

Actual result:
--------------
days => 6015


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



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

Reply via email to