Edit report at http://bugs.php.net/bug.php?id=49778&edit=1
ID: 49778 Updated by: [email protected] Reported by: jenwelsh at yahoo dot com Summary: DateInterval::format("%a") is always zero -Status: Assigned +Status: Closed Type: Bug Package: Date/time related Operating System: Solaris 10 PHP Version: 5.3.0 Assigned To: derick New Comment: This bug has been fixed in SVN. Snapshots of the sources are packaged every three hours; this change will be in the next snapshot. You can grab the snapshot at http://snaps.php.net/. Thank you for the report, and for helping us make PHP better. This is fixed in SVN. Instead of returning 0 (or 7), the property dump will return bool(false) and the %a formatting specifier will return "(unknown)". Previous Comments: ------------------------------------------------------------------------ [2010-03-02 12:13:36] yoarvi at gmail dot com I've attached a patch that sets the number of days value to the correct one only when the DateInterval spans neither years nor months. The patch only addresses the original problem reported in this bug report i.e. in DateInterval's constructor. The DateTime::diff() issue belongs in a separate bug. ------------------------------------------------------------------------ [2010-02-22 22:40:18] johnphayes at gmail dot com It probably should have a different bug for the Windows "6015" bug. Just noting that this is what I'm seeing as well, not the original bug description. ------------------------------------------------------------------------ [2010-01-26 17:51:02] hellbringer at gmail dot com $d1 = new DateTime('2010-01-01'); $d2 = new DateTime('2010-01-26'); $diff = $d1->diff($d2); echo phpversion(); // 5.3.1 echo $_SERVER['SERVER_SOFTWARE']; // Apache/2.2.11 (Win32) PHP/5.3.1 echo $diff->format('%a'); // 6015 echo $diff->days; // 6015 print_r($diff); // DateInterval Object // ( // [y] => 0 // [m] => 0 // [d] => 25 // [h] => 0 // [i] => 0 // [s] => 0 // [invert] => 0 // [days] => 6015 // ) ------------------------------------------------------------------------ [2009-11-17 19:23:01] awinningidea at gmail dot com PHP 5.3 on windows, DateInterval::format('%a') gives 6015 for all dates. Example =============================== $d1 = new DateTime('1/1/2009'); $d2 = new DateTime('1/5/2009'); $diff = $d1->diff($d2); var_dump($diff->format('%a')); Output ------------------------------- string '6015' (length=4) ------------------------------------------------------------------------ [2009-10-05 18:49:57] [email protected] It's a bug, it should set this value really. ------------------------------------------------------------------------ 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 http://bugs.php.net/bug.php?id=49778 -- Edit this bug report at http://bugs.php.net/bug.php?id=49778&edit=1
