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

 ID:                 62326
 Comment by:         juergen78 at gmail dot com
 Reported by:        ploeger dot private at googlemail dot com
 Summary:            date_diff() function returns false result
 Status:             Open
 Type:               Bug
 Package:            Class/Object related
 Operating System:   Windows Server 2008 R2
 PHP Version:        5.3Git-2012-06-14 (snap)
 Block user comment: N
 Private report:     N

 New Comment:

My Hosters OS:
Linux alfa3025 2.6.32-bpo.5-amd64 #1 SMP Wed Jul 20 09:10:04 UTC 2011 x86_64 

Code:
-----
date_default_timezone_set("Europe/Berlin");
$start_timestamp    = date_create('2012-06-01');
$end_timestamp      = date_create('2012-12-01');
$difference = date_diff($start_timestamp, $end_timestamp);
$difference = $difference->format('%M');
echo $difference;

Output:
05


Previous Comments:
------------------------------------------------------------------------
[2012-06-14 19:13:58] ploeger dot private at googlemail dot com

I could reproduce the bug on WinXP Pro SP3, Win Server 2008 R2 and Win7 Pro.
Default Timezone: Europe/Berlin

Workaround with correct result:
date_default_timezone_set("UTC");
$start_timestamp    = date_create('2012-06-01');
$end_timestamp      = date_create('2012-12-01');
$difference = date_diff($start_timestamp, $end_timestamp);
var_dump($difference);  //6 months

Could you reproduce the bug with:
date.timezone = "Europe/Berlin"
in php.ini on linux?

------------------------------------------------------------------------
[2012-06-14 19:00:49] ras...@php.net

That output 06 on Linux

------------------------------------------------------------------------
[2012-06-14 18:52:28] ploeger dot private at googlemail dot com

Description:
------------
The source code will return 05 instead of 06.

If you change the day to 02 instead of 01 in start_timestamp and end_timestamp 
everything seems to work correct.

Debug:
print_r($start_timestamp);
Result: DateTime Object ( [date] => 2012-06-01 00:00:00 [timezone_type] => 3 
[timezone] => Europe/Berlin )

print_r($end_timestamp);
Result: DateTime Object ( [date] => 2012-12-01 00:00:00 [timezone_type] => 3 
[timezone] => Europe/Berlin )

Test script:
---------------
$start_timestamp    = date_create('2012-06-01');
$end_timestamp      = date_create('2012-12-01');
$difference = date_diff($start_timestamp, $end_timestamp);
$difference = $difference->format('%M');  

Expected result:
----------------
06

Actual result:
--------------
05


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



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

Reply via email to